Как настроить контроль доступа, разрешить отправку в сокет io - PullRequest
1 голос
/ 11 апреля 2019

Я использую socket.io и экспресс js.Я хочу установить контроль доступа, разрешить источник для подключения к сокету

Я пытался установить свойство originins при инициализации сокета

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 голосов
/ 08 мая 2019

В 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' );

0 голосов
/ 12 апреля 2019

Вы пробовали:

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, вы разрешаете источник.В противном случае отправьте сообщение об ошибке.См. Документы здесь

0 голосов
/ 13 апреля 2019

Пожалуйста, попробуйте ниже в экспресс-основной файл

// Добавить заголовки app.use (function (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();

});

0 голосов
/ 11 апреля 2019
Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type
...