较旧版本的socket.io正常工作,但最新版本尝试尝试前后连接时显示CORS错误。 我还向服务器添加了CORS中间件,但是它不起作用。 但是,当我切换回旧版本的套接字时,它工作得很好。
嗨,我相信这是因为文档没有反映3.0版本所做的更改。
请参阅此链接https://socket.io/docs/migrating-from-2-x-to-3-0/的CORS处理部分。
不会撒谎,这真是个无赖。 从今天开始就开始使用socket.io,马上就出现了路障。 我将降级到2.x,但似乎文档没有版本控制。
@darrachequesne谢谢,已经解决了!
这可能会对具有glitch.me项目的人造成麻烦。 当升级到v3时,glitch.me项目开始以saifulshihab发布错误进行回复。 但是,CORS似乎与glitch.me和AWS的TOS背道而驰,并且将被删除。 有没有办法在不包含CORS的情况下运行v3框架?
我不完全了解CORS是什么以及为什么会出现问题。 我只是想制定一个计划。
嗨, @ quindo-只是想澄清一下,启用CORS并不违反Glitch的TOS。 一些用户出于恶意原因在任何地方都使用了诸如CORS之类的特定npm软件包,这违反了我们的TOS。
对于那些面临问题的人:
// server-side
const io = require("socket.io")(httpServer, {
cors: {
origin: "https://example.com",
methods: ["GET", "POST"],
allowedHeaders: ["my-custom-header"],
credentials: true
}
});
// client-side
const io = require("socket.io-client");
const socket = io("https://api.example.com", {
withCredentials: true,
extraHeaders: {
"my-custom-header": "abcd"
}
});
我认为现在可以将其关闭。 如果需要,请重新打开。
最有用的评论
你好! 抱歉,该文档正在针对v3进行更新。
我在这里添加了有关CORS的部分: https :
你能检查一下是否足够清楚?