无法与 node.js 服务器通信

时间:2021-06-30 20:46:45

标签: node.js sockets websocket server socket.io

我一直在关注 youtube 上的教程,https://www.youtube.com/watch?v=ppcBIHv_ZPs。 本教程展示了如何使用 socket.io 设置基本服务器,并让两个人玩经典的蛇游戏。

在尝试设置与服务器和客户端的通信后,我在客户端的开发者控制台中收到错误。

我收到的第一个错误是

127.0.0.1/:1 访问 XMLHttpRequest at 'http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NfTLuxq' 来自 origin 'http://127.0.0.1:8080 ' 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

然后我在这里寻求帮助,并收到了有关处理 cors 错误的良好反馈。 所以我然后搜索了如何使用 socket.io 处理 cors 并将我的代码修改为 以下在我的 server.js 文件中。

我修改了我的代码

const io = require('socket.io')();

const io = require("socket.io")( {
  cors: {
    origin: "http://localhost:8080",
    methods: ["GET", "POST"]
  }
});

但是我现在收到另一个错误代码如下:

从源“http://127.0.0.1:8080”访问“http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NfUXfLP”的 XMLHttpRequest 已被 CORS 阻止policy:响应中“Access-Control-Allow-Credentials”标头的值为“”,当请求的凭据模式为“include”时,该值必须为“true”。 XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

我以为一旦我按照我的理解允许原始访问,我就可以从客户端连接到端口 3000。任何理解此错误的帮助将不胜感激!谢谢。

然后我将凭据标志添加到我的 server.js 文件

const io = require("socket.io")( {
  cors: {
    origin: "http://127.0.0.1:8080/",
    methods: ["GET", "POST"],
    credentials: true
  }
});

并再次收到第一个错误。这只是不想工作。

从源“http://127.0.0.1:8080”访问“http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NfUsnNV”的 XMLHttpRequest 已被 CORS 阻止策略:“Access-Control-Allow-Origin”标头的值“http://127.0.0.1:8080/”不等于提供的来源。

1 个答案:

答案 0 :(得分:0)

数字 0 和“/”不一样,如果你在 NodeJS 中查看你想要的字符串,它以“/”结尾,所以从 yow cors contig 中删除它,也总是更喜欢 localhost 而不是 127.0.0.1。本地主机被视为安全域

.........

复制粘贴

/**
   WHAT EVER URL YOU SET HERE HAS TO BE THE EXACT SAME URL YOU PUT O N YOW BROWSER. SAME EXACT 


*/
const io = require("socket.io")( {
  cors: {
    origin: "http://localhost:8080",
    methods: ["GET", "POST"],
    credentials: true
  }
});

并在浏览器上粘贴 http://localhost:8080