gpt4 book ai didi

Node.JS Socket.IO SSL CORS 错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:59 24 4
gpt4 key购买 nike

因此,我制作了一个使用 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

最佳答案

您需要通过安装 CORS 来正确处理您的 CORS如果使用 express,则具有此简单配置的 Node 包。

const cors = require('cors')

let app = express()
app.use(cors({credentials: true, origin: 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": "*",
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization"

});
}).listen(socket_port);
io = io(server, {
origins: 'example.com:*'
});

您还可以查看这些网站 Enable CORSMDN CORS处理。希望对您有所帮助。

关于Node.JS Socket.IO SSL CORS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48359989/

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