我正在尝试使用套接字连接到我正在运行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的引用)
答案 0 :(得分:1)
这是CORS的问题。
由于您的网页位于localhost:8000且Socket.io服务器位于localhost:8080(两个不同的端口,因此有两个不同的服务器),因此要允许它们之间的异步请求,您需要启用CORS。出于安全原因,浏览器需要这样做。
您的服务器似乎正在使用Express。由于像cors这样的NPM软件包,在Express中启用CORS非常简单。或者,查看有关SO的一些问题,例如:How to allow CORS?