【发布时间】:2012-04-22 02:51:30
【问题描述】:
我正在本地电脑上开发一个应用程序。前端应该使用 spinjs 构建,后端 API 应该使用 node.js。 Spine 在端口 9294 上运行,node.js 在端口 3000 上运行。 在 Spine 中,我在模型中添加了以下内容:
@url: "http:localhost:3000/posts"
在我的快递服务器中
app.get('/posts', function(req, res){
console.log("giving ALL the posts");
res.header("Access-Control-Allow-Origin", "*")
res.json(posts);
});
但我总是在 chrome 中收到以下错误:
XMLHttpRequest cannot load http://localhost:3000/posts. Origin http://localhost:9294 is not allowed by Access-Control-Allow-Origin.
我必须做什么才能正确访问我的 api?我虽然在响应中添加标题确实可以解决问题。
【问题讨论】:
-
您是否检查了响应标头以确认标头确实已设置?此外,jQuery 使用 'OPTIONS' HTTP 命令来检测预授权;确保 express 也响应该 HTTP 动词
-
老实说,我的请求似乎永远不会到达我的 node.js 服务器。在将任何内容发送到客户端之前,我在 app.get() 中添加了一个调试语句。直接通过 url 访问我的 api 时,我可以看到该语句,但通过 spin 访问时看不到
-
你应该使用像 charles 这样的东西来确保这种情况发生。我们在这里做了很多 x 域的事情,直到您看到没有设置标头,这令人沮丧。
标签: javascript jquery ajax node.js spine.js