无法与 node.js 服务器通信
Failure to communicate with node.js server
我一直在关注 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' header出现在请求的资源上。
然后我在这里寻求帮助,并收到了有关处理 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 策略阻止:响应中 'Access-Control-Allow-Credentials' header 的值是 '' 当请求的凭据模式是 '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' header 具有值 'http://127.0.0.1:8080/' 不等于提供的原点。
数字 0 和“/”不一样,如果你在 NodeJS 中查看你想要的字符串,它以“/”结尾,所以从 yow cors contig 中删除它,也总是喜欢 localhost 而不是 127.0. 0.1。 Localhost 被视为安全域
........
复制粘贴
/**
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
我一直在关注 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' header出现在请求的资源上。
然后我在这里寻求帮助,并收到了有关处理 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 策略阻止:响应中 'Access-Control-Allow-Credentials' header 的值是 '' 当请求的凭据模式是 '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' header 具有值 'http://127.0.0.1:8080/' 不等于提供的原点。
数字 0 和“/”不一样,如果你在 NodeJS 中查看你想要的字符串,它以“/”结尾,所以从 yow cors contig 中删除它,也总是喜欢 localhost 而不是 127.0. 0.1。 Localhost 被视为安全域
........
复制粘贴
/**
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