问题描述
我知道这个问题已被问过几次。
但是,我无法获得任何解决方案。
I运行node.js和socket.io的标准安装。 (从Amazon EC2上的yum)
问题是Chrome正在回退到xhr轮询,这些请求需要一个可用的CORS配置。但是,我似乎不能让它工作。我的web服务器运行在端口80,node.js(socket.io)运行在端口81.我试图让socket.io使用源策略,你可以看到。我也尝试使用*:*作为没有运气的原点。
这是我的代码:
I know this question has been asked a couple of times.
However, I can't get any those solutions to work.
I'm running a standard install of node.js and socket.io. (From yum on Amazon EC2)
The problem is that Chrome is falling back to xhr polling, and those requests require a working CORS configuration. However, I can't seem to get it to work. My web server is running on port 80, and node.js(socket.io) is running on port 81. I have tried to get socket.io to use a origin policy as you can see. I have also tried to use "* : *" as origin with no luck.
Here's my code:
var http = require('http');
var io = require('socket.io').listen(81, {origins: '*'});
io.configure( function(){
io.set('origin', '*');
});
io.set("origins","*");
var server = http.createServer(function(req, res) {
io.sockets.emit("message", "test");
res.writeHead(200);
res.end('Hello Http');
console.log("Message recieved!");
});
server.listen(82);
io.sockets.on('connection', function(client) {
console.log("New Connection");
});
非常感谢!
推荐答案
这是我必须使用的语法CORS使用socket.io:
This is the syntax I had to use to get CORS working with socket.io:
io.set( 'origins', '*domain.com*:*' );
如果涉及到它,请使用 console.log
以确保您在 Manager.prototype.handleHandshake
内部中输入此代码块./ lib / manager.js
:
If it comes to it, use console.log
to make sure you're entering this block of code in Manager.prototype.handleHandshake
inside ./lib/manager.js
:
if (origin) {
// https://developer.mozilla.org/En/HTTP_Access_Control
headers['Access-Control-Allow-Origin'] = '*';
if (req.headers.cookie) {
headers['Access-Control-Allow-Credentials'] = 'true';
}
}
这篇关于Socket.io不设置CORS头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!