【发布时间】:2018-06-29 19:25:52
【问题描述】:
所以,我制作了一个使用 NodeJS 和 Socket.IO 的应用程序,它运行良好。最近,我安装了 SSL 证书并将套接字从 http://example.com:8080 移动到 https://example.com:8443。但是现在,我收到了这个错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://example.com:8443/socket.io/?EIO=3&transport=polling&t=M4Kox0q. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
现在,我做了一些研究,我认为是因为端口(从:443 到:8443 的请求),但是我怎样才能让它不被阻止呢?
这是客户端代码:
socket = io.connect("https://example.com:8443", {
secure: true
});
和服务器端:
io = require('socket.io');
server = require('https').createServer({
key: fs.readFileSync('./cloudflare.key'),
cert: fs.readFileSync('./cloudflare.crt')
}, (req, res) => {
res.writeHead(200, {
'Access-Control-Allow-Origin': '*'
});
}).listen(socket_port);
io = io(server, {
origins: 'example.com:*'
});
除此之外,在 Dev Tools 的 Network 选项卡中,请求以523 No Reason Phrase 状态代码列出。
可能有帮助的其他信息:
- 我使用 cloudflare SSL(使用
Full选项)。 - 我使用 NodeJS v9.4.0
【问题讨论】:
-
您需要修复523错误的原因。请参阅getstatuscode.com/523 “此状态代码未在任何 RFC 中指定,但被 CloudFlare 的反向代理用于指示已被网站管理员或代理本身阻止的资源”和 @987654322 @“Cloudflare 无法访问源服务器;例如,如果源服务器的 DNS 记录不正确” 以及support.cloudflare.com/hc/en-us/articles/… 的详细说明
-
我在发帖之前已经阅读了这些材料,但是,由于我是 Cloudflare 和 HTTPS 的新手,它们并没有帮助我解决它...
标签: node.js sockets ssl cloudflare