node.js - Chrome v88+ 和 Nestjs 服务器上的 socket-io 连接出现 CORS 错误
问题描述
我有一个连接到 Nestjs 服务器以建立 WS 连接的应用程序(服务器位于不同的 URL 上,因此它是一个 CORS 请求)。
WebsocketGateway 就是这样定义的。
@WebSocketGateway(port, {
handlePreflightRequest: (req, res) => {
const headers = {
'Access-Control-Allow-Headers': 'Authorization',
'Access-Control-Allow-Origin': 'the page origin',
'Access-Control-Allow-Credentials': true,
};
res.writeHead(200, headers);
res.end();
}
})
在 Chrome v87 及以下版本和 Firefox 上运行起来就像一个魅力。自从将我的浏览器升级到 Chrome 88 后,前端 socket-io 连接进行了一个连接重新连接循环,如下所示:
- 预检请求通过并获得 200 响应,上面设置了标头;
- 实际连接失败并
CORS error
作为浏览器控制台中的唯一消息
解决方案
以防其他人需要这个,在你的装饰器中有一个 cors 属性
@WebSocketGateway({ cors: true })
推荐阅读
- python - vs代码上的pygame中的“没有可用的视频设备”错误
- ceph - ceph 中列出对象的工作原理
- c++ - 如何计算精确的时差(C++)?
- python - Qweb 报告:渲染编译 AST 时出错,内存错误
- c++ - 如何构建一个 QBS 项目,以促进和简化 Qt 的 Web 程序集在 QtCreator 中的构建和运行?
- android - Print EditText output in \n format - android
- reactjs - Material-UI ThemeProvider 未将主题传递给组件
- javascript - 将产品配置 JSON 与通用配置 JSON 合并 - 合并其中的数组时出现问题
- java - 图像未在 JavaFX ImageView 中显示
- go - 在 Go API 中创建了 Empty Swagger 规范