【发布时间】:2021-09-13 00:07:25
【问题描述】:
我一直在关注 youtube 上的教程,https://www.youtube.com/watch?v=ppcBIHv_ZPs。 本教程展示了如何使用 socket.io 设置基本服务器,并让两个人玩经典的贪吃蛇游戏。
尝试设置与服务器和客户端的通信后,我在客户端的开发者控制台中收到错误消息。
我收到的第一个错误是
127.0.0.1/:1 从源“http://127.0.0.1:8080”访问“http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NfTLuxq”的 XMLHttpRequest ' 已被 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"]
}
});
但是我现在收到另一个错误代码如下:
CORS 已阻止从源“http://127.0.0.1:8080”访问“http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NfUXfLP”处的 XMLHttpRequest策略:响应中“Access-Control-Allow-Credentials”标头的值为“”,当请求的凭据模式为“包含”时,该值必须为“真”。 XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。
我想一旦我按照我的理解允许源访问,我就可以从客户端连接到端口 3000。任何帮助理解此错误将不胜感激!谢谢。
然后我将凭据标志添加到我的 server.js 文件中
const io = require("socket.io")( {
cors: {
origin: "http://127.0.0.1:8080/",
methods: ["GET", "POST"],
credentials: true
}
});
并再次收到第一个错误。这只是不想工作。
CORS 已阻止从源“http://127.0.0.1:8080”访问“http://localhost:3000/socket.io/?EIO=3&transport=polling&t=NfUsnNV”的 XMLHttpRequest策略:“Access-Control-Allow-Origin”标头的值“http://127.0.0.1:8080/”不等于提供的来源。
【问题讨论】:
-
去掉斜杠
标签: node.js sockets websocket server socket.io