Как получить доступ к полям заголовка HTTP-запроса через JavaScript? - PullRequest
46 голосов
/ 21 октября 2008

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


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

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

Ответы [ 6 ]

64 голосов
/ 21 октября 2008

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

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

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

8 голосов
/ 21 октября 2008

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

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

6 голосов
/ 30 ноября 2010

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

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

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

То же самое в PHP будет:

<?php echo $_SERVER["HTTP_REFERER"]; ?>
1 голос
/ 12 декабря 2012

Referer и user-agent являются заголовком запроса, а не заголовком ответа.

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

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

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

0 голосов
/ 07 июля 2014
var ref = Request.ServerVariables("HTTP_REFERER");

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

0 голосов
/ 21 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...