如何在套接字io中设置访问控制允许源

时间:2019-04-11 18:49:53

标签: javascript express socket.io

我正在使用socket.io并表达js。我要设置访问控制允许源到套接字连接

我尝试在初始化套接字时设置origins属性

var io = require('socket.io')(http, {origins: 'http://www.example.com'})

In the image below access control allow origin is set to * 在上图中,访问控制的允许原点设置为*。我想将其设置为example.com(还要注意,请求方法是GET)

enter image description here 但是,在此图像中,设置了访问控制允许源标头(还请注意,请求方法是POST)

当请求方法为GET时,如何添加访问控制允许源标头。请帮助

4 个答案:

答案 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