Как получить доступ к полям заголовка запроса 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");
Введите внутри кавычек любое другое имя переменной сервера, которое вы хотите.