передача реферера от клиента и получение headers.referer в node.js - PullRequest
0 голосов
/ 25 мая 2018

У меня есть несколько сайтов, я хочу проверить, какой сайт вызывает мой API, я сделал это в node.js

  const mySite = req.headers && req.headers.referer.split('/')[2]

, в обычном случае я получу mysite1.com, myothersite.net, но вышекод «безопасно»?В каком случае заголовков нет?Если я позвоню из POSTMAN и не поставлю заголовок, это вызовет какие-либо проблемы для приведенного выше кода?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Я знаю, что это небезопасно, по крайней мере, он что-то сделал.Моя проблема будет выше кода кода сбой моего сервера, если реферер отсутствует.

Да, это будет сбой.В вашем коде, если Referer не отправлено, вы получите эту ошибку

TypeError: Cannot read property 'split' of undefined

Так как вы используете экспресс, вы можете использовать req.header () , делаякод немного короче и безопаснее:

const mySite = (req.header('Referer') || '').split('/')[2];
                 //  ^^^ case insensitive header check

Я использовал req.header('Referer') || '', чтобы убедиться, что мы всегда получаем строку, даже если заголовок не установлен, поэтому безопасно .split.

Помимо отсутствия учета регистра, преимущество использования req.header() заключается в том, что поля «Referrer» и «Referer» являются взаимозаменяемыми .

0 голосов
/ 25 мая 2018

ваш код потерпит неудачу, если нет заголовка Referer.Вы должны проверить это перед звонком req.headers.referer.split():

cons mySite = req.headers && req.headers.referer && req.headers.referer.split('/')[2];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...