【发布时间】:2015-06-24 02:10:35
【问题描述】:
我在 apache 上运行带有 socket.io 的 node.js。我让它在子域上运行(例如 - myapp.mydomain.com:8000),你可以看到我在不同的端口上运行它,以便我可以使用 myapp.mydomain.com 访问它。
在 chrome、Opera、IE 中一切正常,但 FF 失败并且出现跨域错误。
跨域请求被阻止:同源策略不允许读取位于http://myapp.mydomain.com:8000/socket.io/?EIO=2&transport=polling&t=1429260923523-0 的远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。
有什么想法吗?
更新:
按要求添加了我的代码:
function handler(req, res) {
fs.readFile('../index.html', function(err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading client.html');
}
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.writeHead(200);
res.end(data);
});
}
【问题讨论】:
-
您是否设置了任何 CORS 标头?如果是这样,您可以将它们添加到您的问题中吗?
-
您不能拥有
Access-Control-Allow-Headers两次。应该是res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");。 -
检查并按照建议进行。还是不开心!
标签: javascript node.js sockets firefox