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

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


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

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

Вот пример:

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

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

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 6

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

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