我正在尝试从另一个站点访问socket.io服务器。它工作了几个星期,但现在我一直收到以下错误。当从heroku上的服务器访问nodester上的服务器时,就会发生这种情况。错误是:
XMLHttpRequest cannot load http://site2.nodester.com/socket.io/xhr-polling//1311008802545.
Origin http://site1.heroku.com is not allowed by Access-Control-Allow-Origin.
Resource interpreted as Script but transferred with MIME type text/plain.
Uncaught SyntaxError: Unexpected identifier下面是我如何连接套接字的方法:
socket = new io.Socket(
'site2.nodester.com', {port: 80, rememberTransport: false}
);下面是服务器代码:
// requires
server = http.createServer(function(req, res){
// server stuffs
}),
server.listen(8362);
var io = io.listen(server),
// io code发布于 2011-07-20 07:30:11
你是否让socket.io仍然使用默认的origins = *,或者至少把origins = site1.heroku.com
发布于 2014-06-02 20:55:39
我面临的问题是,从不同的位置为客户端socket.io.js提供服务。
您可以通过从您尝试连接到的同一服务器上提供客户端js文件来避免此问题。
例如,我最初的客户端代码是这样的,它抛出了错误
<script src="/socket.io/socket.io.js"></script>
var socket = io.connect('http://mydomain.com/');一旦我把它修改成这样,它就可以正常工作了。
<script src="http://mydomain.com/socket.io/socket.io.js"></script>
var socket = io.connect('http://mydomain.com/');我的服务器代码是,
var express = require('express');
var app = express();
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Headers", "Content-Type");
res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
next();
});
var server = http.createServer(app);
io = socketio.listen(server, {log:false, origins:'*:*'});
... //io.connect and events below发布于 2011-07-23 22:45:08
我也有同样的问题,我还没有解决。
我测试了许多配置:
io.set("origins","*");
io.set('transports', [
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);或
io.set("origins = *");
io.set('transports', [
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);或
var socket = io.listen(appS1,{origins: '*:*'});感谢您的帮助:)
https://stackoverflow.com/questions/6736706
复制相似问题