【发布时间】:2015-04-10 16:03:57
【问题描述】:
如何为 express.io 启用跨域,因为我需要一个 cordova 应用程序,chrome 说“请求的资源上没有 'Access-Control-Allow-Origin' 标头。来源”,这是我的代码。
服务器
var app = require('express.io')();
app.http().io()
app.listen(2000);
app.io.set('origins', '*:*');
app.io.set('transports', [
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
app.get('/', function (req, res) {
res.setHeader('Access-Control-Allow-Origin','*');
res.send(200, 'Todo fino');
req.io.route('connection');
});
app.io.route('connection', function (req) {
console.log('User connected');
});
客户
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://cdn.socket.io/socket.io-1.3.3.js"></script>
<script>
var socket = io.connect('http://localhost:2000');
</script>
<title>Document</title>
</head>
<body>
Probando Socket system
</body>
</html>
【问题讨论】:
-
Express.io 已经过时了。您的 socket.io 客户端版本是
1.3.3,而 express.io 仍然在0.9.16上运行,它们不向后兼容。 -
我在使用最新版本的sailsjs时遇到了同样的错误。与 config.sockets 起源:' * : * ',
-
尝试添加 res.header("Access-Control-Allow-Headers", "Content-Type");
标签: javascript node.js sockets