gpt4 book ai didi

javascript - NodeJS-socket.io 出现 "Access is Denied"异常

转载 作者:行者123 更新时间:2023-12-02 19:48:31 24 4
gpt4 key购买 nike

我有一个 Node (0.6.11)/socket.io(0.9.0)应用程序,在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 没有任何问题。

可能是什么原因?

.

这是源代码:

服务器:

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 中。

最佳答案

抱歉没有人愿意回答你,但问题是你正在执行 CORS(跨域资源共享),这意味着你的 socket.io 服务器运行在与你的网络服务器不同的端口上(我假设端口 80 ,但你没有明确地说出来)

IE8 和 IE9 对 CORS 的支持非常有限。我不知道 IE8 支持的解决方案,但这是你的问题。更多详细信息可以在这里找到:http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

关于javascript - NodeJS-socket.io 出现 "Access is Denied"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com