info - 未处理的socket.io url

时间:2015-02-19 14:43:17

标签: javascript node.js sockets socket.io

我正在尝试使用套接字连接到我正在运行localy的Node服务器 但我继续在服务器端获得'info - unhandled socket.io url' + Chrome上的"XMLHttpRequest cannot load http://localhost:8080/socket.io/?EIO=3&transport=polling&t=1424356590540-0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access."(使用地址localhost:8000/index.html

// top six lines of code to see setup
var express = require('express'), 
app = express(), 
http = require('http'),
server = http.createServer(app),
io = require('socket.io').listen(server);

server.listen(8080);

我也在端口8000上使用python SimpleHTTPServer

客户端代码是:

var socket = io.connect('http://localhost:8080');

socket.on('connection', function(){
    console.log("connected")
});

使用https://cdn.socket.io/socket.io-1.3.4.js“版本的sockets.io

我假设html是无关紧要的,因为我没有任何javascript代码(除了对angular和jquery的引用)

1 个答案:

答案 0 :(得分:1)

这是CORS的问题。

由于您的网页位于localhost:8000且Socket.io服务器位于localhost:8080(两个不同的端口,因此有两个不同的服务器),因此要允许它们之间的异步请求,您需要启用CORS。出于安全原因,浏览器需要这样做。

您的服务器似乎正在使用Express。由于像cors这样的NPM软件包,在Express中启用CORS非常简单。或者,查看有关SO的一些问题,例如:How to allow CORS?