Jak uzyskać dostęp do pól nagłówka żądania HTTP za pomocą JavaScript?

Chcę przechwycić pola nagłówka żądania HTTP, przede wszystkim Referer i User-Agent, w moim JavaScript po stronie klienta. Jak Mogę uzyskać do nich dostęp?


Google Analytics udaje się uzyskać dane za pomocą JavaScript, które mają osadzone na swoich stronach, więc jest to zdecydowanie możliwe.

Powiązane:
dostęp do nagłówków HTTP strony w JavaScript

Author: Community, 2008-10-21

6 answers

Jeśli chcesz uzyskać dostęp do referrer i user-agent, są one dostępne dla Javascript po stronie klienta, ale nie poprzez bezpośredni dostęp do nagłówków.

Aby pobrać referrer, użyj document.referrer.
Aby uzyskać dostęp do user-agenta, użyj navigator.userAgent.

Jak wskazali inni, nagłówki HTTP nie są dostępne, ale konkretnie zapytałeś o referer i user-agent, które są dostępne za pośrednictwem Javascript.

 59
Author: Grant Wagner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-25 17:02:56

Prawie z definicji JavaScript po stronie klienta nie znajduje się na końcu odbioru żądania http, więc nie ma nagłówków do odczytania. Najczęściej Twój JavaScript jest wynikiem odpowiedzi http. Jeśli próbujesz uzyskać wartości żądania http, które wygenerowało Twoją odpowiedź, będziesz musiał napisać kod po stronie serwera, aby osadzić te wartości w tworzonym JavaScript.

Jest trochę trudne, aby Kod po stronie serwera generował kod po stronie klienta, więc upewnij się, że to jest to, czego potrzebujesz. Na przykład, jeśli chcesz uzyskać informacje o User-agencie, może to wystarczyć, aby uzyskać różne wartości, które JavaScript zapewnia do wykrywania przeglądarki. Zacznij od Navigatora.nazwa aplikacji i nawigator.appVersion.

 8
Author: bmb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-30 19:01:19

Można uzyskać do tego Dostęp poprzez Javascript, ponieważ jest to właściwość załadowanego dokumentu, a nie jego rodzica.

Oto krótki przykład:

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

To samo w PHP byłoby:

<?php echo $_SERVER["HTTP_REFERER"]; ?>
 6
Author: Tommy Lacroix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-30 15:28:36

Wyobrażam sobie, że Google chwyta Niektóre Dane po stronie serwera-pamiętaj, gdy strona ładuje się do przeglądarki, która zawiera kod Google Analytics, twoja przeglądarka wysyła żądanie do serwerów Google; Google może uzyskać dane w ten sposób, jak również poprzez JavaScript osadzony na stronie.

 0
Author: Jason Bunting,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-20 22:46:09

Referer i user-agent są nagłówkiem żądania, a nie nagłówkiem odpowiedzi.

Oznacza to, że są one wysyłane przez przeglądarkę lub połączenie ajax (które można modyfikować wartość), i są one ustalane przed otrzymaniem odpowiedzi HTTP.

Więc zasadniczo nie prosisz o nagłówek HTTP, ale o ustawienie przeglądarki.

Wartość, którą otrzymujesz z dokumentu.referer i nawigator.userAgent może nie być rzeczywistym nagłówkiem, ale ustawieniem przeglądarki.

 0
Author: Li-chih Wu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-12 03:30:06
var ref = Request.ServerVariables("HTTP_REFERER");

Wpisz w cudzysłowie dowolną inną nazwę zmiennej serwera.

 -8
Author: silvertback42,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-07 20:01:35