socket.io配置CORS后无法连接Node.js服务器报错问题求助
socket.io CORS报错解决方案
你遇到的三次报错分别对应三个配置问题:
- 第一次报错是没有配置CORS规则,服务端未返回跨域许可头
- 第二次报错是配置CORS时未开启credentials许可,和socket.io默认带凭证的请求规则不匹配
- 第三次报错是你配置的origin末尾多了斜杠,和浏览器实际发送的origin值
http://127.0.0.1:8080无法完全匹配
正确配置代码
const io = require("socket.io")( { cors: { // 不要加末尾斜杠,如果本地会同时用localhost和127.0.0.1访问前端,就写数组包含两个源 origin: ["http://localhost:8080", "http://127.0.0.1:8080"], methods: ["GET", "POST"], credentials: true } });
额外注意事项
- 修改配置后必须重启node服务,新的CORS规则才会生效
- 开启
credentials: true时,origin不允许使用通配符*,必须明确指定允许的源 - 确保前端连接socket.io的地址和服务端监听地址一致,比如服务端监听localhost:3000,前端就不要连127.0.0.1:3000,避免不必要的跨域问题
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

