【问题标题】:Socket IO allows CORS request from curl, but not from client application套接字 IO 允许来自 curl 的 CORS 请求,但不允许来自客户端应用程序
【发布时间】:2021-05-24 02:41:04
【问题描述】:

我正在制作一个应用程序,其中有一个节点后端和一个角度前端。

我正在使用 socket.IO 在我的客户端和服务器之间进行通信。

我遇到了 CORS 问题,我将其解决(尝试)为:

const io: SocketIOServer = new SocketIOServer(server, {
  cors: {
    origin: true
  }
}); // only for development

但是,当我从我的客户端应用程序(在另一个端口运行)发出请求时,我仍然遇到了 CORS 问题。

于是我到终端,用 curl 发出请求,如图here:

me@Desktop:~$ curl "http://127.0.0.1:5000/socket.io/?EIO=4&transport=polling&t=NV5sBAn"
0{"sid":"jAhPIEEkdy8EY8I_AAAD","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":5000}

这表明 curl 能够访问服务器,并且没有遇到 CORS 问题。

在我的客户端中,我尝试连接到我的服务器:

socket = io.connect('http://locahost:5000'); // server running at port 5000

帮助我解决我的问题,以便我可以连接到我的服务器。

另外附注:如果应用程序中 server.io 的版本是 3,则对服务器的 curl 请求也会失败。只有在 server.io 版本 4 上,curl 请求才会通过。

如果有帮助,Firefox 中的错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://locahost:5000/socket.io/?EIO=4&transport=polling&t=NV5vi1_. (Reason: CORS request did not succeed).

编辑:我的问题是无法使用客户端连接到服务器。我展示了 curl,因为它是在 socket.io cors 配置网页中建议的。

【问题讨论】:

    标签: node.js socket.io cors engine.io


    【解决方案1】:

    因为 socket.io 使用普通的 http 请求发起连接,所以它受到 CORs 的限制。 CURL 不强制执行 CORs 限制(就像浏览器那样),所以这就是你在那里看不到它的原因。

    你有几个选择:

    1. 您可以在您的服务器中启用此特定的 COR 请求以允许它。
    2. 您可以在启动连接的 socket.io 客户端代码中为您的 socket.io 连接指定{transports: ['websocket']} 选项。这将告诉 socket.io 立即从不受 COR 约束的 webSocket 连接开始。

    【讨论】:

      【解决方案2】:

      Curl 没有实现 CORS 安全限制,因此它始终能够连接。您的前端和后端有不同的端口,这些端口被认为是不同的 CORS 来源。因此,您要么需要在服务器上正确设置允许的来源,并确保它处理飞行前请求,要么让进程为您的前端代理请求提供后端服务,以便从浏览器的角度来看,一切都在同一个 url 上

      【讨论】:

      • 我在初始化套接字服务器时在我的服务器中设置 CORS。我还能做些什么吗?感谢您的帮助
      【解决方案3】:

      显然,问题是:

       socket = io.connect('http://localhost:5000');
      

      将其更改为:

       socket = io.connect('http://127.0.0.1:5000');
      

      工作!我不知道为什么这个名字没有得到解决!

      【讨论】:

        猜你喜欢
        • 2020-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        相关资源
        最近更新 更多