HTTP cross-domain 请求以 400 响应,但服务器无法接收请求数据

HTTP cross-domain request responsed with 400, but server do receive request data

我使用 Chrome 43 中的 Ajax 向具有 header Access-Control-Allow-Origin:* 的服务器发送 HTTP cross-domain POST 请求,并且 Chrome 在 devtools 中记录一条消息如下:

XMLHttpRequest cannot load http://172.65.34.13/v1/image/upload. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:6032' is therefore not allowed access. The response had HTTP status code 400.

响应header:

HTTP/1.1 400 Bad Request
Server: nginx/1.9.4
Date: Thu, 27 Aug 2015 02:05:46 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 105
Connection: keep-alive
Set-Cookie: sessionid=39b9608771e38408b2f1278621805514; Path=/; HttpOnly

但最奇怪的是服务器确实收到了我的 post 数据!怎么会这样?我错过了有关请求或服务器的某些信息吗?谁能帮我解决这个问题?

服务器不知道请求是否来自AJAX,所以它总是会收到post数据。但是浏览器阻止了响应 body 和 returns 你的 400 错误请求。

在您的情况下,响应 header 中没有 Access-Control-Allow-Origin:*。一定是你的服务器有问题。