0

我有一個節點(0.6.11)/socket.io(0.9.0)應用:NodeJS-socket.io得到 「拒絕訪問」,在FF運行良好,但IE8拋出JS異常異常

Access is denied 

在socket.io.js(線2561):

req.open(method || 'GET', this.prepareUrl() + query, true); 

之前的幾行,REQ被定義爲

req = io.util.request(this.socket.isXDomain()) 

這表明它是一個橫結構域是起訴,但我一直在本地做。 Plus FF沒有問題。

可能是什麼原因?

這裏的源代碼:

SERVER:

var app = require('express').createServer() 
    , io = require('socket.io').listen(app); 

app.listen(1337); 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

客戶:

<html> 
    <head> 
    </head> 
    <body>   
     <div id='contents'> 
     </div> 
     <script src="http://localhost:1337/socket.io/socket.io.js"></script> 
     <script> 
      var socket = io.connect('http://127.0.0.1:1337'); 
      socket.on('news', function (data) { 
      console.log(data); 
      socket.emit('my other event', { my: 'data' }); 
      }); 
     </script> 
    </body> 
</html> 

我讀到有關安全標誌設置爲true,這讓異常消失,但隨後有點失敗,什麼都不做。在FF和IE中。

+1

什麼是在IE中的安全設置?高於默認值? – 2012-03-07 07:23:44

+0

我已經把它們轉到最低的設置... – EasierSaidThanDone 2012-03-07 19:49:21

回答

0

遺憾沒人打擾回答你,但問題是,你正在做的CORS(跨域資源共享 - ),這意味着你的socket.io服務器從您的網絡服務器不同的端口上運行(我假設端口80,但你沒有明確說出來)

IE8和IE9對CORS的支持非常有限。我不知道IE8支持的解決方案,但這是你的問題。更多細節可以在這裏找到:http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

相關問題