javascript - 在 firefox 中运行 node.js 和 socket.io 时出现 CORS 错误

标签 javascript node.js sockets firefox

我在 apache 上运行带有 socket.io 的 node.js。我让它在子域上运行(例如 - myapp.mydomain.com:8000),如您所见,我在不同的端口上运行它,以便我可以使用 myapp.mydomain.com 访问它。

在 chrome、Opera、IE 中一切正常,但 FF 失败并且出现跨域错误。

跨源请求被阻止:同源策略不允许读取位于 http://myapp.mydomain.com:8000/socket.io/?EIO=2&transport=polling&t=1429260923523-0 的远程资源.这可以通过将资源移动到同一域或启用 CORS 来解决。

有什么想法吗?

更新:

按要求添加了我的代码:

function handler(req, res) {
  fs.readFile('../index.html', function(err, data) {
    if (err) {
      console.log(err);
      res.writeHead(500);
      return res.end('Error loading client.html');
    }
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.writeHead(200);
    res.end(data);
  });
}

最佳答案

Websockets (Socket.IO) 不依赖于 CORS。 Socket.IO 背后的主要原因之一是在处理不同域时完全停止 CORS 类问题。如果您认为这可以通过启用 cors 来完成,那么假设您使用的是 express.js 或 hapi.js 试试这个,请参阅下面链接到如何启用 cors。

hapijs -->

new Hapi.Server({
  connections: {
    routes: {
      cors: true
    }
  }
})

expressjs -->

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

关于javascript - 在 firefox 中运行 node.js 和 socket.io 时出现 CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695574/

相关文章:

javascript - 在新窗口中打开 html5 <video> 标签内容(包括视频!)

javascript - 在 Node.js 中不使用 readFileSync() 串行读取多个文件

javascript - 使用 Angular/Nodejs 将表单数据发布到 MongoDB 数据库

javascript - Node.js http2 服务器与一个域的 http 服务器

c - 套接字选项是否从监听套接字跨 accept() 继承?

sockets - 如何防止接收套接字永远阻塞以防万一它没有接收到任何数据?

Javascript 表单提交安全性

javascript - 将文本字段输入传递给 Javascript 变量 - AJAX Codeigniter

javascript - 使用生成器/迭代器包装结果集回调函数

c - 如何使用 fork() 函数在 C 中守护进程。 - 套接字编程