访问控制允许原点之谜

时间:2014-01-17 05:06:09

标签: jquery google-chrome cors

我在Chrome(版本32.0.1700.77)中制作CORS请求时遇到问题。我很肯定正在发送正确的预检标题,并且它们也是在主要请求期间发送的。我应该补充一点,我正在使用jQuery $ .ajax,并将contentType参数设置为“application / json”。 contentType参数的存在似乎触发了问题(因为没有它就可以正常工作)。

这是OPTIONS请求的输出。

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Authorization, Content-Type, X-Requested-With
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Content-Type: text/plain
Content-Length: 2
Date: Fri, 17 Jan 2014 04:58:43 GMT
Connection: keep-alive

这是主要POST请求的输出(预计为401):

HTTP/1.1 401 Unauthorized
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Authorization, Content-Type, X-Requested-With
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Content-Type: application/json; charset=utf-8
Content-Length: 36
Date: Fri, 17 Jan 2014 05:00:05 GMT
Connection: keep-alive

问题是Chrome由于某种原因无法识别Access-Control-Allow-Origin响应标头,并在错误控制台中显示以下行:

  

XMLHttpRequest无法加载http://site1.dev:3000/api/v1/pathways。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://site2.dev:8000”访问。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

原来Chrome没有从API服务器报告500错误。卫生署!