我正在使用socket.io并表达js。我要设置访问控制允许源到套接字连接
我尝试在初始化套接字时设置origins属性
var io = require('socket.io')(http, {origins: 'http://www.example.com'})
在上图中,访问控制的允许原点设置为*。我想将其设置为example.com(还要注意,请求方法是GET)
但是,在此图像中,设置了访问控制允许源标头(还请注意,请求方法是POST)
当请求方法为GET时,如何添加访问控制允许源标头。请帮助
答案 0 :(得分:0)
您尝试过吗:
io.set('origins', 'http://yourdomain.com:80');
或者您也可以尝试使用server.origins
,如下所示:
io.origins((origin, callback) => {
if (origin !== 'https://foo.example.com') {
return callback('origin not allowed', false);
}
callback(null, true);
});
通过返回true
,您可以允许原点。否则,发送错误消息。请参阅文档here
答案 1 :(得分:0)
请在快速主文件中尝试以下
//添加标题 app.use(函数(req,res,next){
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', 'http://yourdomain.com:80');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Pass to next layer of middleware
next();
});
答案 2 :(得分:0)
在Express中,您可以这样使用:
app.all('*(or set for what way you exectly need)', function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://www.example.com');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'your headers');
next();
});
此外,在socket.io中,您无需为POST或GET分别指定标题。 这是您可以尝试的套接字设置示例:
io.set( 'origins', '*www.example.com' );
答案 3 :(得分:-1)
Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type