首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Socket.io访问控制-允许=来自远程站点的源错误

Socket.io访问控制-允许=来自远程站点的源错误
EN

Stack Overflow用户
提问于 2011-07-19 01:20:02
回答 8查看 23K关注 0票数 7

我正在尝试从另一个站点访问socket.io服务器。它工作了几个星期,但现在我一直收到以下错误。当从heroku上的服务器访问nodester上的服务器时,就会发生这种情况。错误是:

代码语言:javascript
复制
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

下面是我如何连接套接字的方法:

代码语言:javascript
复制
socket = new io.Socket(
    'site2.nodester.com', {port: 80, rememberTransport: false}
);

下面是服务器代码:

代码语言:javascript
复制
// requires

server = http.createServer(function(req, res){
    // server stuffs
}),

server.listen(8362);

var io = io.listen(server),

// io code
EN

回答 8

Stack Overflow用户

发布于 2011-07-20 07:30:11

你是否让socket.io仍然使用默认的origins = *,或者至少把origins = site1.heroku.com

票数 5
EN

Stack Overflow用户

发布于 2014-06-02 20:55:39

我面临的问题是,从不同的位置为客户端socket.io.js提供服务。

您可以通过从您尝试连接到的同一服务器上提供客户端js文件来避免此问题。

例如,我最初的客户端代码是这样的,它抛出了错误

代码语言:javascript
复制
<script src="/socket.io/socket.io.js"></script>
var socket = io.connect('http://mydomain.com/');

一旦我把它修改成这样,它就可以正常工作了。

代码语言:javascript
复制
<script src="http://mydomain.com/socket.io/socket.io.js"></script>
var socket = io.connect('http://mydomain.com/');

我的服务器代码是,

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2011-07-23 22:45:08

我也有同样的问题,我还没有解决。

我测试了许多配置:

代码语言:javascript
复制
  io.set("origins","*");
  io.set('transports', [
    'websocket'
  , 'flashsocket'
  , 'htmlfile'
  , 'xhr-polling'
  , 'jsonp-polling'
  ]);

代码语言:javascript
复制
  io.set("origins = *");
  io.set('transports', [
    'websocket'
  , 'flashsocket'
  , 'htmlfile'
  , 'xhr-polling'
  , 'jsonp-polling'
  ]);

代码语言:javascript
复制
var socket  = io.listen(appS1,{origins: '*:*'});

感谢您的帮助:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6736706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档