Как мне получить доступ к полям заголовка HTTP-запроса с помощью JavaScript?

StackOverflow https://stackoverflow.com/questions/220149

  •  03-07-2019
  •  | 
  •  

Вопрос

Я хочу захватить поля заголовка HTTP-запроса, в первую очередь Referer и User-Agent, в моем клиентском JavaScript.Как я могу получить к ним доступ?


Google Analytics удается получать данные с помощью JavaScript, которые они встраивают в ваши страницы, так что это определенно возможно.

Похожие:
Доступ к HTTP-заголовкам веб-страницы в JavaScript

Это было полезно?

Решение

Если вы хотите получить доступ к referrer и user-agent, они доступны для клиентского Javascript, но не путем прямого доступа к заголовкам.

Чтобы получить реферера, используйте document.referrer.
Чтобы получить доступ к агенту пользователя, используйте navigator.userAgent.

Как указывали другие, HTTP-заголовки недоступны, но вы специально спросили о refererer и user-agent, которые доступны через Javascript.

Другие советы

Почти по определению, клиентский JavaScript не находится на принимающей стороне http-запроса, поэтому у него нет заголовков для чтения.Чаще всего ваш JavaScript является результатом http-ответа.Если вы пытаетесь получить значения http-запроса, который сгенерировал ваш ответ, вам придется написать серверный код для встраивания этих значений в создаваемый вами JavaScript.

Заставить серверный код генерировать клиентский становится немного сложнее, поэтому убедитесь, что это то, что вам нужно.Например, если вам нужна информация об агенте пользователя, вам может оказаться достаточным получить различные значения, которые JavaScript предоставляет для обнаружения браузером.Начните с navigator.AppName и navigator.appVersion.

К нему можно получить доступ через Javascript, потому что это свойство загруженного документа, а не его родительского.

Вот краткий пример:

<script type="text/javascript">
document.write(document.referrer);
</script>

То же самое в PHP было бы:

<?php echo $_SERVER["HTTP_REFERER"]; ?>

Реферер и user-agent - это заголовок запроса, а не ответа.

Это означает, что они отправляются браузером или вашим ajax-вызовом (значение которого вы можете изменить), и они решаются до того, как вы получите HTTP-ответ.

Таким образом, по сути, вы запрашиваете не HTTP-заголовок, а настройки браузера.

Значение, которое вы получаете из document.referer и navigator.UserAgent, может быть не фактическим заголовком, а настройкой браузера.

Я бы предположил, что Google захватывает некоторые сервер данных - помните, что когда в ваш браузер загружается страница, содержащая код Google Analytics, ваш браузер отправляет запрос на серверы Google;Google может получать данные таким образом, а также с помощью JavaScript, встроенного в страницу.

var ref = Request.ServerVariables("HTTP_REFERER");

Введите в кавычки любое другое имя переменной сервера, которое вы хотите.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top