【问题标题】:Provisional headers are shown socket io临时标头显示为套接字 io
【发布时间】: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 在浏览器中来自哪里?

标签: express socket.io nodes


【解决方案1】:

希望这将有助于解决所有 CORS 错误

const cors = require('cors');
app.use(cors());

文档CORS

【讨论】:

    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2017-03-26
    • 2019-09-01
    • 2017-10-03
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多