我已经设置了一个带有套接字 io 转动的节点服务器,并尝试通过另一台服务器连接到它。
然而,不同计算机上的某些浏览器给我这个错误,并使其始终重新连接:
XMLHttpRequest 无法加载。当请求的凭据模式为“include”时,响应中“Access-Control-Allow-Origin”标头的值不能是通配符“*”。起源 'https://www. differentServerDomain.fr https://www.differentServerDomain.fr' 因此不允许访问。 XMLHttpRequest 发起的请求的凭据模式由 withCredentials 属性控制。
我的js配置:
var port = 3000;
var fs = require('fs');
var https = require('https');
var express = require('express');
var app = express();
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/devpeter.net/fullchain.pem')
};
var server = https.createServer(options, app);
var io = require('socket.io')(server);
io.origins('https://www.differentServerDomain.fr:* https://www.differentServerDomain.fr/wp-admin/index.php:*');
// start of server
server.listen(port, function(){
console.log('listening on *: '+ port + "\n");
});
我使用的是node 8.0和socket io 2.2,
对你的帮助表示感谢。
编辑:
这是客户端代码:
<script src="https://serverDomain.net:3000/socket.io/socket.io.js"></script>
<script>
var socket = io('https://serverDomain.net:3000');
</script>
我找到了解决办法。
由于某种原因,并非所有服务器都始终允许默认传输方法。
所以我在客户端指定了一个中立的运输方法,如下所示:
var socket = io('https://yourDomain:3000', { transports : ['websocket'] });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)