[英]CORS Node.js server
我对Node.js完全陌生,只是想让一些示例代码运行,但是我一直遇到CORS问题。
Server.js
var http = require('http');
var io = require('socket.io');
server = http.createServer(function(req, res){
});
server.listen(8080);
// socket.io
var socket = io.listen(server, { origins: '*:*' });
// Enables CORS
var enableCORS = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content- Length, X-Requested-With');
// intercept OPTIONS method
if ('OPTIONS' == req.method) {
res.send(200);
}
else {
next();
}
};
// enable CORS!
socket.use(enableCORS);
//--------------
socket.on('connection', function(client){
client.on('message', function(msg){
socket.broadcast(msg);
})
});
客户代码:
var socket = io.connect('127.0.0.7:8080');
socket.on('message', function(msg){
alert(msg);
console.log(msg);
});
我尝试为node.js安装CORS模块,但是我一直在firefox调试器中获取消息,但仍然保持此状态:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://8080/socket.io/1/?t=1400151675528. This can be fixed by moving the resource to the same domain or enabling CORS.
ReferenceError: socket is not defined client2.html:8
ReferenceError: socket is not defined
仅在目标服务器上设置CORS标头是不够的。 您还需要为提供客户端HTML文件的Web服务器设置适当的标头。
由于您没有提到如何提供客户端文件,因此我无法为您发布正确的解决方案。 但是,如果您使用的是Apache httpd,则可以在配置或.htaccess
输入以下内容:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, x-http-method-override, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.