【发布时间】:2021-01-04 21:52:05
【问题描述】:
我第一次尝试在生产环境中设置套接字 io。我想我遇到了一些与 CORS 相关的问题。
目前我得到的错误是
显示临时标题
服务器端代码:
app.js
app.io.attach(server);
index.js
app.io = require('socket.io')({origins: allowed_header});
在客户端:
const socket = io(process.env.SOCKET_ADDRESS);
其中套接字地址是 http://localhost:8080 用于开发,https://websiteName.com:8080 用于生产
服务器使用 nginx 的默认端口。 该应用在本地运行时运行良好,但它在生产环境中记录了上述错误。
谢谢
更新:
我尝试更改本地客户端以连接到远程服务器。它也以这种方式工作。只是我的生产客户现在有以下问题:
加载资源失败:服务器响应状态为 403 (Forbidden)
更新2:
我无法真正解决问题,所以我只是做了以下操作:
origins: ['http://localhost:3000', 'http://localhost:4000', '*:*']
它现在有效,但我想弄清楚发生了什么。我尝试将 : 替换为 https://example.com:80,但没有成功。
【问题讨论】:
-
您的客户端代码显示对
process.env.SOCKET_ADDRESS的引用。这看起来像 node.js 代码。如果是这样,则只有浏览器客户端执行 CORS,而不是 node.js 客户端。 -
不确定您的意思是什么?能详细点吗?
-
你的客户是什么?它是从浏览器运行的吗?还是从 node.js 应用程序运行?如果它是从浏览器运行的,您从哪里获得
process.env.SOCKET_ADDRESS?这不是浏览器支持的东西。 -
浏览器。客户只是做出反应。
-
那么,
process.env.SOCKET_ADDRESS在浏览器中来自哪里?