Zugriff auf die web-Seite der HTTP-Header in JavaScript
Wie kann ich eine Seite zuzugreifen, die den HTTP-Antwort-Header per JavaScript?
Bezug auf diese Frage, die modifiziert wurde, um Fragen über den Zugriff auf zwei bestimmte HTTP-Header.
Verwandte:
Wie kann ich den Zugriff auf die HTTP-request-header-Felder per JavaScript?
Das ist es nicht. diese Frage ist über die Antwort - Header, nicht Anfrage - Header.
InformationsquelleAutor keparo | 2008-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht möglich, Lesen Sie die aktuellen Header. Sie könnten eine weitere Anforderung an die gleiche URL und Lesen Sie die überschriften, aber es gibt keine Garantie, dass der Header genau gleich der aktuellen.
Verwenden Sie den folgenden JavaScript-code ein, um alle HTTP-Header, indem Sie eine
get
Anfrage:Je nachdem, welche header Sie sind, nachdem Sie verwenden möchten, können die 'KOPF' - verb.
Eine neue Anfrage wird nur funktionieren, wenn die response-Werte sind garantiert identisch von einer Anforderung zur nächsten. Es hängt von Ihrer Anwendung, so dass Ihre Laufleistung mit einem Ansatz, wie dies variieren.
Dieser hack funktioniert möglicherweise in einigen Szenarien, aber es wird nicht funktionieren, wenn die Seite, die das Skript generiert wurde, in Reaktion auf eine POST-Anforderung, und es hilft nicht, wenn Sie versuchen zu bestimmen, ob der server-Fehler (HTTP 5XX) während der Verarbeitung der original-Anfrage.
Diese Antwort ist schrecklich falsch. Die richtige Antwort ist "es ist nicht möglich". Oder passt diese Antwort "Es ist nicht möglich, aber hier ist ein hack, um zu versuchen zu simulieren, die möglicherweise oder möglicherweise nicht für Sie".
InformationsquelleAutor Raja
Leider gibt es nicht eine API geben Sie den HTTP-Antwort-Headern für Ihre ersten Anforderung der Seite. Das war die ursprüngliche Frage hier gepostet. Es wurde immer wieder fragte, auch, weil einige Menschen bekommen möchte, die tatsächliche response-Header der original-Seite Anfrage ohne Erteilung einer anderen.
Für AJAX-Anfragen:
Wenn ein HTTP-request über AJAX ist es möglich, den response-Header mit der
getAllResponseHeaders()
Methode. Es ist Teil des XMLHttpRequest-API. Zu sehen, wie dies angewendet werden kann, überprüfen Sie heraus diefetchSimilarHeaders()
- Funktion unten. Beachten Sie, dass dies ein work-around für das problem, das nicht zuverlässig für einige Anwendungen.Die API angegeben wurde in den folgenden Kandidaten-Empfehlung für XMLHttpRequest: XMLHttpRequest - W3C Candidate Recommendation, 3. August 2010
Insbesondere die
getAllResponseHeaders()
- Methode angegeben wurde, im folgenden Abschnitt: w3.org:XMLHttpRequest
:getallresponseheaders()
MethodeDen MDN-Dokumentation ist auch gut: developer.mozilla.org:
XMLHttpRequest
.Diese wird nicht geben Ihnen Informationen über die original-Seite request HTTP-response-Header, aber es könnte verwendet werden, um Vermutungen darüber, was diese Header wurden. Mehr dazu ist im folgenden beschrieben.
Erste header-Werte von der Ersten Anforderung der Seite:
Diese Frage wurde zunächst gefragt, vor einigen Jahren, zu Fragen, speziell über, wie man an den ursprünglichen HTTP-response-Header für die aktuelle Seite (d.h. die gleiche Seite, in dem das javascript ausgeführt wurde). Das ist eine ganz andere Frage, als einfach nur um die Antwort-Header für jede HTTP-Anfrage. Bei der ersten Anforderung der Seite, die überschriften sind nicht leicht zugänglich für javascript. Ob die header-Werte, die Sie benötigen, zuverlässig und hinreichend stabil ist, wenn Sie einen Antrag auf der gleichen Seite wieder über AJAX, hängt von der jeweiligen Anwendung ab.
Im folgenden sind einige Vorschläge, um das problem.
1. Anfragen auf Ressourcen, die weitgehend statische
Wenn die Antwort ist weitgehend statisch, und die Header sind voraussichtlich nicht viel ändern zwischen den Anforderungen, könnten Sie machen eine AJAX-Anforderung für dieselbe Seite, die Sie gerade auf und davon ausgehen, dass Sie es sind die gleichen Werte, die Bestandteil der Seite der HTTP-Antwort. Dies könnte erlauben Ihnen den Zugriff auf die Header, die Sie brauchen, mit dem schönen XMLHttpRequest-API, wie oben beschrieben.
Dieser Ansatz problematisch sein, wenn Sie wirklich darauf angewiesen, dass die Werte, die Konsistenz zwischen Anforderungen, da können Sie nicht vollständig garantieren, dass Sie identisch sind. Es wird, hängt von der spezifischen Anwendung und ob Sie wissen, dass der Wert, den Sie brauchen, ist etwas, das nicht verändert werden von einer Anforderung zur nächsten.
2. Rückschlüsse
Gibt es einige Stückliste Eigenschaften (Browser Object Model), die der browser bestimmt, indem man die Header. Einige dieser Eigenschaften spiegeln die HTTP-Header, die direkt (z.B.
navigator.userAgent
eingestellt ist der Wert des HTTP -User-Agent
- header-Feld). Durch schnüffeln um die verfügbaren Eigenschaften, die Sie vielleicht in der Lage zu finden, was Sie brauchen, oder einige Hinweise zu geben, was der HTTP-Antwort enthalten.3. Verstauen Sie
Wenn Sie die Kontrolle der server-Seite, können Sie Zugriff auf alle header, die Sie mögen, wie Sie konstruieren die vollständige Antwort. Werte, die weitergegeben werden konnten, um den client mit der Seite, die versteckt in einigen Aufschlag oder vielleicht in einem inline-JSON-Struktur. Wenn Sie wollte, jedem HTTP-request-header zur Verfügung, um Ihre javascript, konnte Sie Durchlaufen auf dem server und senden Sie Sie zurück, wie verborgene Werte in der markup. Es ist wahrscheinlich nicht ideal zum senden von header-Werte auf diese Weise, aber Sie könnte sicherlich tun es für einen bestimmten Wert Sie benötigen. Diese Lösung ist wohl ineffizient, zu, aber es würde die Arbeit machen, wenn Sie es benötigt.
RE update: ajax-Anfragen wurden zu einem festen Bestandteil der web-Entwicklung den Weg zurück in 2008 als auch -_-
BOM steht für "Browser Object Model", für diejenigen Fragen. Siehe stackoverflow.com/questions/2213594/... für einige Hintergrundinformationen.
3) man könnte stash Sie in der http-cookie-header zu. Dann würden Sie nicht brauchen, ändern Sie die Dokument-markup.
Es ist ein einfacher Weg, um Zugriff auf die response-header-Elemente, wie das link-element: Verwendung Dokument Beispiel hier: gist.github.com/FunThomas424242/...
InformationsquelleAutor keparo
Mit
XmlHttpRequest
können Sie ziehen Sie die aktuelle Seite und untersuchen Sie dann die http-Header der Antwort.Besten Fall ist einfach ein
HEAD
Anfrage und überprüfen Sie dann die überschriften.Einige Beispiele, dies zu tun, haben Sie einen Blick auf http://www.jibbering.com/2002/4/httprequest.html
Just my 2 cents.
InformationsquelleAutor Allain Lalonde
Die Lösung mit dem Service-Mitarbeiter
Service-Mitarbeiter sind in der Lage, Zugriff auf Netzwerk-Informationen enthält Header. Das gute daran ist, dass es funktioniert auf jeder Art von Anforderung, nicht nur XMLHttpRequest.
, Wie es funktioniert:
fetch
die Anfrage mit derrespondWith
Funktion.postMessage
Funktion.Beispiel:
Service-Mitarbeiter sind ein wenig kompliziert zu verstehen, deshalb hab ich baute eine kleine Bibliothek, die nicht alle diese. Es ist verfügbar auf github: https://github.com/gmetais/sw-get-headers.
Einschränkungen:
InformationsquelleAutor Gaël Métais
Andere Möglichkeit zum senden von header-Informationen zu JavaScript wäre durch cookies. Der server kann Daten extrahieren, was Sie braucht, aus dem request-Header aus und senden Sie zurück innerhalb eines
Set-Cookie
Antwort-header und-cookies können gelesen werden, in JavaScript. Als keparo sagt, obwohl, es ist am besten, dies nur für ein oder zwei Header, anstatt für alle von Ihnen.InformationsquelleAutor savetheclocktower
Für die Suche nach einem Weg, um zu analysieren, alle HTTP-Header in ein Objekt zugegriffen werden kann, wie ein Wörterbuch
headers["content-type"]
, ich habe eine FunktionparseHttpHeaders
:InformationsquelleAutor Diego
Wenn wir reden über Anfrage Header, Sie können erstellen Sie Ihre eigenen Header, wenn dabei XmlHttpRequests.
Rufen Sie open() vor der Verwendung der setRequestHeader() Methode. developer.mozilla.org/en/...
Zugang, in der ursprünglichen Frage geht es darum, Header, nicht die Einstellung Header.
InformationsquelleAutor Leo
Können Sie nicht den Zugriff auf den http-Header, aber einige der Informationen in Ihnen ist in der DOM. Zum Beispiel, wenn Sie wollen, um zu sehen, der http-referer (sic), des Dokuments verwenden.referrer. Möglicherweise gibt es andere, wie dies für andere http-Header. Versuchen Sie googeln die spezifische Sache, die Sie wollen, wie "http-referer javascript".
Ich weiß, das sollte selbstverständlich sein, aber ich hielt auf der Suche nach Sachen wie "http-Header javascript" wenn alles, was ich wirklich wollte, war der referer, und bekam keine brauchbaren Ergebnisse. Ich weiß nicht, wie ich wusste nicht, ich könnte eine spezifischere Abfrage.
InformationsquelleAutor David Winiecki
Verwendung von mootools, können Sie diese verwenden.xhr.getAllResponseHeaders()
InformationsquelleAutor
Wie viele Menschen habe ich gegraben Netz keine richtige Antwort 🙁
Habe ich dennoch herausfinden umgehen, die anderen helfen konnte. In meinem Fall habe ich die volle Kontrolle meiner web-server. In der Tat, es ist Teil meiner Bewerbung (siehe Ende-Referenz). Es ist für mich einfach ein Skript hinzufügen, das mein http-Antwort. Ich veränderte meine httpd-server zu Spritzen, ein kleines Skript in jeden html-Seiten. Ich nur push-extra 'js-script' - Zeile gleich nach meinem header Konstruktion, dass eine vorhandene variable aus meinem Dokument in meinem browser [I Speicherort auswählen], aber eine andere option möglich ist. Während mein server ist geschrieben in nodejs, ich habe keine Zweifel, dass die gleiche Technik kann die Verwendung von PHP oder andere.
Nun alle html-Seiten geladen von meinem server, habe das Skript ausgeführt, indem der browser an der Rezeption. Dann kann ich das leicht überprüfen in JavaScript wenn die variable vorhanden ist oder nicht. In meinem Anwendungsfall muss ich wissen, wenn ich verwenden soll, JSON-oder JSON-P-Profil zu vermeiden, CORS-Problem, aber das gleiche Verfahren kann für andere Zwecke verwendet werden [d.h.: wählen Sie zwischen Entwicklungs - /Produktions-server, von server a REST/API-Schlüssel, etc ....]
Über den browser brauchen Sie nur die variable direkt von JavaScript aus, wie in meinem Beispiel, wo ich es verwenden, um wählen Sie mein Json/JQuery-Profil
Wer immer möchte prüfen lassen, mein code:
https://www.npmjs.org/package/gpsdtracking
InformationsquelleAutor Fulup
Habe ich gerade getestet, und das funktioniert bei mir mit Chrome Version 28.0.1500.95.
War ich benötigen, um eine Datei zu downloaden und Lesen Sie den Namen der Datei. Der Dateiname wird in der Kopfzeile, also machte ich die folgenden:
Ausgabe:
InformationsquelleAutor rushmore
Dies ist eine alte Frage. Nicht sicher, wenn Unterstützung wurde breiter, aber
getAllResponseHeaders()
undgetResponseHeader()
erscheinen nun werden ziemlich standard: http://www.w3schools.com/xml/dom_http.aspInformationsquelleAutor dlo
Dies ist mein Skript zu bekommen alle die Antwort-Header:
Nachdem die Antwort-Header.
Dies ist ein Vergleichstest mit Schleudern.es:
InformationsquelleAutor Elenasys
Erhalten die überschriften als ein Objekt, das ist handlicher (Verbesserung der Raja ' s Antwort):
InformationsquelleAutor shaedrich
Wie bereits erwähnt, wenn Sie die Kontrolle der server-Seite, dann sollte es möglich sein, zu senden der ersten Anfrage-Header an den client zurück in die erste Antwort.
In Express, zum Beispiel, die folgenden Werke:
app.get('/somepage', (req, res) => {
res.render('somepage.hbs', {headers: req.headers});
})
Die Header werden dann innerhalb der Vorlage, so könnte versteckt werden, optisch aber in den markup-Code und Lesen von clientseitiger javascript.
InformationsquelleAutor o-t-w
Ich denke, die Frage ging in die falsche Richtung,
Wenn Sie wollen, um die Anfrage-header von JQuery/JavaScript-die Antwort ist einfach Keine. Die anderen Lösungen ist, erstellen Sie eine aspx-Seite oder jsp-Seite, dann können wir leicht den Zugriff auf die request-header.
Nehmen Sie alle den Antrag in der aspx-Seite und setzen Sie in eine session/cookies Sie können dann den Zugriff auf die cookies in JavaScript-Seite..
InformationsquelleAutor santhos jery