【发布时间】:2012-07-28 16:38:17
【问题描述】:
我将 express.js 用于我的服务器,带有以下标头:
x-powered-by: Express
connection: keep-alive
content-length: 2
content-type: application/json; charset=utf-8
access-control-allow-methods: GET,PUT,POST,DELETE
access-control-allow-origin: *
access-control-allow-headers: x-requested-with
我打电话给res.header 允许CORS:
res.header("Access-Control-Allow-Origin:", "*");
res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
res.header("Access-Control-Allow-Headers", "x-requested-with");
你可以在这里测试:http://my-api.rs.af.cm/api/products
对于我的前端,我使用 jsbin 并使用 $.ajax 调用我的服务器:http://jsbin.com/apizez/37/edit
这里的结果:http://jsbin.com/apizez/37
你可以看看JS控制台,你会看到这个错误:
XMLHttpRequest cannot load http://my-api.rs.af.cm/api/products. Origin http://jsbin.com is not allowed by Access-Control-Allow-Origin.
我阅读了关于 CORS 的所有其他答案,我不想使用 easyXDM。
【问题讨论】:
-
您的所有请求是否都将这些标头传回?您是否支持 Preflight OPTIONS 请求?
-
刚刚看了看,是的,Chrome 正在执行一个预检 OPTIONS 请求,该请求没有返回任何 CORS 标头。修复你会舔这个的问题。
-
我在 OPTIONS 请求中添加了标头,并将
"Access-Control-Allow-Headers"设置为"content-Type,x-requested-with,origin,accept"。但它仍然无法正常工作,您可以在我的帖子中的示例中看到。 -
在 Chrome JavaScript 控制台中,有
OPTIONS http://my-api.jit.su/api/products 200 (OK),但显示为错误。
标签: jquery ajax node.js express cors