使用socket.io.js报错:
test.html:1 Access to XMLHttpRequest at ‘http://localhost:3000/socket.io/?EIO=4&transport=polling&t=NnpyGug’ from origin ‘http://127.0.0.1:8848’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
报错原因:跨域问题
解决办法:
1.引入io模块时加入,{ cors: true }
2.加入允许跨域代码
var io = require('socket.io')(server,{ cors: true });
app.all("*",function(req,res,next){
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin","*");
//允许的header类型
res.header("Access-Control-Allow-Headers","Origin,X-Requested-With,Accept,Content-type");
res.header("Access-Control-Allow-Credentials",true);
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("Content-Type","application/json;charset=utf-8")
if (req.method.toLowerCase() == 'options')
res.sendStatus(200); //让options尝试请求快速结束
else
next();
});