socket 跨域问题?
发布于 9个月前 作者 cxh80301983 1634 次浏览

火狐上提示的 已阻止交叉源请求:同源策略不允许读取 http://x.x.x.x:6789/socket.io/1/?t=1399889735198 上的远程资源。可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题。 server端 var condb = require(‘./condb’); var io = require(‘socket.io’).listen(6789,{log:false}); io.configure(function () { io.set('log level’, 1); io.set('origin’, ‘*’); }); io.sockets.on('connection’, function (socket) { socket.emit('news’, { hello: ‘world’ }); socket.on('nick’,function(data){ condb.add({’nick’:data.name},socket.id) }); socket.on('all’,function(data){ socket.broadcast.emit('broad’,{’type’:0,’msg’:’信息推送’,’name’:’SYSTEM’}); }); socket.on('disconnect’, function () { condb.del(socket.id) }); }); ~
客户端

<script type="text/javascript" src='http://x.x.x.x:6789/socket.io/socket.io.js'></script> <script type="text/javascript"> var socket; window.onload = function(){ socket = io.connect('http://x.x.x.x:6789'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); } function send(msg){ socket.emit('nick',{'name':msg}) } </script>

客户端现在就是静态html页面 如果 我现在 在本地的页面 使用的话 会提示跨域

搜了好久都没解决,

4 回复

放到同一个服务器下应该就行了吧?

在一个服务器上都没问题

求教,是此路不通吗? 还是有办法解决

这样试试 res.setHeader("Access-Control-Allow-Origin", “*”); res.setHeader("Access-Control-Allow-Methods", “POST, GET, OPTIONS, DELETE”); res.setHeader("Access-Control-Max-Age", “3600”); res.setHeader('Access-Control-Allow-Headers’, ‘X-Requested-With,content-type’);

回到顶部