HTTP wird vom Hypertext -Transferprotokoll geschrieben. Das gesamte World Wide Web verwendet dieses Protokoll. Fast die meisten Inhalte, die Sie in Ihrem Browser sehen, werden über das HTTP -Protokoll wie diesen Artikel übertragen.
HTTP -Header sind HTTP -Anfragen und entsprechende Kerne. Es enthält Informationen zu Kundenbrowsern, Anforderungsseiten, Servern usw.
Wenn Sie eine URL in der Browser -Adressleiste eingeben, ähnelt Ihr Browser der folgenden HTTP -Anfrage:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
Benutzer-Agent: Mozilla/5.0 (Windows; u; Windows NT 6.1; en-us; RV: 1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Akzeptieren: text/html, application/xhtml+xml, application/xml; q = 0,9,*/*; q = 0,8
Akzeptieren Sprache: en-us, en; q = 0,5
Akzeptanzkodierung: Gzip, Deflate
Accept-Charset: ISO-8859-1, UTF-8; Q = 0,7,*; Q = 0,7
Keep-Alive: 300
Verbindung: Keep-Alive
Cookie: phpSessid = r2t5uvjq435r4q7ib3vtdjq120
Pragma: No-Cache
Cache-Control: No-Cache
Die erste Zeile heißt Anforderungszeile. Es beschreibt die grundlegenden Informationen dieser Anfrage und der Rest sind HTTP -Header.
Nach Abschluss der Anfrage erhält Ihr Browser möglicherweise die folgende HTTP -Antwort:
HTTP/1.x 200 OK
Transfer-Codierung: Chunked
Datum: Sa, 28. November 2009 04:36:25 GMT
Server: Litespeed
Verbindung: Schließen
X-Kraft-By: W3 Gesamtcache/0,8
Pragma: öffentlich
Ausgelassen: Sa, 28. November 2009 05:36:25 GMT
ETAG: PUB1259380237; GZ
Cache-Control: max-agete = 3600, öffentlich
Inhaltstyp: Text/HTML; charset = utf-8
Last-Modified: Sa, 28. November 2009 03:50:37 GMT
X-Pingback: http://net.tutsplus.com/xmlrpc.php
Inhaltskodierung: Gzip
Variieren: Akzeptieren, Cookie, Benutzeragent
<!-... Rest der HTML ...->
Die erste Zeile wird als Statuszeile bezeichnet, gefolgt von HTTP -Headern. Nach Abschluss der leeren Linie wird der Inhalt ausgegeben (in diesem Fall eine HTML -Ausgabe).
Sie können jedoch keine HTTP -Header sehen, wenn Sie sich den Quellcode der Seite ansehen, obwohl sie zusammen mit dem, was Sie sehen können, an den Browser gesendet werden.
Diese HTTP -Anfrage sendet auch einige Anfragen zum Empfangen anderer Ressourcen wie Bilder, CSS -Dateien, JS -Dateien usw.
Schauen wir uns die folgenden Details an.
Die folgenden Firefox -Erweiterungen können Ihnen helfen, HTTP -Header zu analysieren:
1. Firebug
2. LIVE HTTP -Header
3. In PHP:
Unter dem Artikel sehen Sie einige Beispiele für die Verwendung der PHP -Demonstration.
Die erste Zeile, die erste Zeile genannt, enthält drei Teile:
Die verbleibenden Abschnitte sind jeweils eine Zeile mit einem Namen: Wertpaar. Sie enthalten eine Vielzahl von Informationen zu Anfragen und Ihrem Browser. Zum Beispiel gibt User-Agent Ihre Browserversion und das von Ihnen verwendete Betriebssystem an. Akzept-Codierung teilt dem Server mit, dass Ihr Browsen komprimierte Ausgabe ähnlich wie GZIP akzeptieren kann.
Die meisten dieser Header sind optional. HTTP -Anfragen können sogar darauf reduziert werden:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.com
Und Sie können weiterhin eine gültige Antwort vom Server erhalten.
Die drei häufigsten Anforderungsarten sind: Get, Post und Head. Möglicherweise sind Sie während des Schreibprozesses von HTML bereits mit den ersten beiden vertraut.
Die meisten HTML, Bilder, JS, CSS ..., die in den Browser übertragen werden, werden über die GET -Methode angefordert. Dies ist die Hauptmethode, um Daten zu erhalten.
Um beispielsweise einen Nettus+ -Aktel zu erhalten, sieht die erste Zeile der HTTP -Anfrage normalerweise so aus:
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Sobald der HTML geladen ist, sendet der Browser eine GET -Anfrage, um das Bild zu erhalten, genau so:
GET /wp-content/themes/tuts_theme/images/header_bg_tall.png HTTP/1.1
Das Formular kann auch über die GET -Methode gesendet werden. Hier ist ein Beispiel:
<form action=foo.php method=GET>
Vorname: <Eingabename = First_Name Type = Text />
Nachname: <Eingabename = last_name type = text />
<Eingabename = Aktionstyp = Senden Wert = Senden />
</form>
Wenn dieses Formular eingereicht wird, sieht die HTTP -Anfrage so aus:
GET /foo.php?first_name=John&last_name=Doe&action=Submit HTTP/1.1
...
Sie können die Formulareingabe an den Server senden, indem Sie es an die Abfragezeichenfolge anhängen.
Obwohl Sie Daten über die GET -Methode an die URL anhängen können, um sie an den Server weiterzugeben, ist es in vielen Fällen angemessener, Posts zum Senden von Daten an den Server zu senden. Es ist unrealistisch, eine große Menge an Daten durch GET zu senden, und es hat bestimmte Einschränkungen.
Es ist üblich, Postanfragen zum Senden von Formulardaten zu verwenden. Ändern wir das obige Beispiel, um den Beitrag zu verwenden:
<form action=foo.php method=POST>
Vorname: <Eingabename = First_Name Type = Text />
Nachname: <Eingabename = last_name type = text />
<Eingabename = Aktionstyp = Senden Wert = Senden />
</form>
Das Senden dieses Formulars erstellt wie folgt eine HTTP -Anfrage:
POST /foo.php HTTP/1.1
Host: Localhost
Benutzer-Agent: Mozilla/5.0 (Windows; u; Windows NT 6.1; en-us; RV: 1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Akzeptieren: text/html, application/xhtml+xml, application/xml; q = 0,9,*/*; q = 0,8
Akzeptieren Sprache: en-us, en; q = 0,5
Akzeptanzkodierung: Gzip, Deflate
Accept-Charset: ISO-8859-1, UTF-8; Q = 0,7,*; Q = 0,7
Keep-Alive: 300
Verbindung: Keep-Alive
Referer: http: //localhost/test.php
Inhaltstyp: Anwendung/x-www-form-urlencoded
Inhaltslänge: 43
First_name = John & last_name = doe & action = subieren
Hier sind drei Dinge zu beachten:
Postmethodenanforderungen können auch für AJAX, Anwendungen, Curl verwendet werden. Und alle Datei -Upload -Formulare sind für die Verwendung von Post erforderlich.
Kopf und Get sind sehr ähnlich, außer dass der Kopf den Inhaltsteil der HTTP -Antwort nicht akzeptiert. Wenn Sie eine Kopfanfrage senden, bedeutet dies, dass Sie nur an dem HTTP -Header interessiert sind, nicht an dem Dokument selbst.
Mit dieser Methode kann der Browser feststellen, ob die Seite geändert wurde, und somit den Cache steuern. Es kann auch festgelegt werden, ob das angeforderte Dokument vorhanden ist.
Wenn Sie beispielsweise viele Links auf Ihrer Website haben, können Sie sie einfach separat anfragen, um festzustellen, ob es tote Links gibt, was viel schneller ist als die Verwendung von GET.
Wenn der Browser eine HTTP -Anforderung sendet, antwortet der Server auf die Anforderung über eine HTTP -Antwort. Wenn Sie sich nicht um den Inhalt kümmern, sieht die Anfrage so aus:
Die erste wertvolle Informationen sind die Vereinbarung. Derzeit verwendet der Server http/1.x oder http/1.1.
Als nächstes repräsentiert eine kurze Nachricht den Status. Code 200 bedeutet, dass unsere Anfrage erfolgreich gesendet wurde und der Server das angeforderte Dokument nach den Header -Informationen zurückgibt.
Wir alle haben Seite 404 gesehen. Wenn ich einen Pfad anfordere, der nicht vom Server vorhanden ist, antwortet der Server mit einem 404 anstelle von 200.
Der Rest der Antwort ähnelt der HTTP -Anfrage. In diesem Fall geht es um Serversoftware, wenn Seiten/Dateien geändert wurden, MIME -Typ usw.
In ähnlicher Weise sind diese Headerinformationen optional.
Wie oben erwähnt, wird 200 verwendet, um anzuzeigen, dass die Anfrage erfolgreich ist.
206 TeilinhaltWenn eine Anwendung nur Dateien in einem bestimmten Bereich anfordert, wird 206 zurückgegeben.
Dies wird normalerweise zum Download -Management, zum Breakpoint -Fortsetzung oder zum Download für Datei -Chunking verwendet.
404 nicht gefundenEs ist leicht zu verstehen
401 nicht autorisiertPasswort geschützte Seiten kehren zu diesem Status zurück. Wenn Sie nicht das richtige Passwort eingeben, sehen Sie die folgenden Informationen in Ihrem Browser:
Beachten Sie, dass dies nur eine von Kennwort geschützte Seite ist. Das Popup-Feld, in dem die Anfragen zur Eingabe eines Kennworts angefordert werden, sieht folgendermaßen aus:
403 verbotenWenn Sie keine Erlaubnis haben, auf eine Seite zuzugreifen, kehrt sie zum 403 -Status zurück. Dies geschieht normalerweise, wenn Sie versuchen, einen Ordner ohne Indexseite zu öffnen. Wenn die Servereinstellungen nicht zulassen, dass das Betrachten des Verzeichnisinhalts angezeigt wird, sehen Sie einen 403 -Fehler.
Andere Methoden senden auch Berechtigungsbeschränkungen, z.
order allow,deny
Ablehnen von 192.168.44.201
Ablehnen von 224.39.163.12
Ablehnen von 172.16.7.92
von allen erlauben
302 (oder 307) bewegte sich vorübergehend und 301 dauerhaft bewegtDiese beiden Zustände werden angezeigt, wenn der Browser weiterleitet. Zum Beispiel verwenden Sie einen URL -Kürzungsdienst wie Bit.ly. So wissen sie auch, wer auf ihren Link geklickt hat.
302 und 301 sind den Browsern sehr ähnlich, aber es gibt einige Unterschiede für Suchmaschinencrawler. Wenn Ihre Website beispielsweise aufrechterhalten wird, werden Sie den Kundenbrowser mit 302 zu einer anderen Adresse umleiten. Suchmaschinencrawler werden Ihre Seite in Zukunft wieder in den Vordergrund stellen. Wenn Sie jedoch 301 -Umleitung verwenden, mitteilen Sie, dass Sie der Suchmaschinen -Crawler mitteilen: Ihre Website wurde dauerhaft an die neue Adresse verschoben.
500 Serverfehler (interner Serverfehler)Dieser Code wird normalerweise angezeigt, wenn das Seitenskript abstürzt. Die meisten CGI -Skripte geben Fehlermeldungen wie PHP nicht in den Browser aus. Wenn ein tödlicher Fehler auftritt, senden sie nur einen Statuscode von 500. Zu diesem Zeitpunkt müssen Sie das Serverfehlerprotokoll auf Fehlerbehebung überprüfen.
Komplette ListeHier finden Sie die Beschreibung der vollständigen HTTP -Statuscode. Oder überprüfen Sie es hier (http://tools.vevb.com/table/http_status_code).
Schauen wir uns nun einige gemeinsame HTTP -Anfrageinformationen in HTTP -Headern an.
All diese Header -Informationen finden Sie im $ _server -Array von PHP. Sie können auch die Funktion getAllHeaders () verwenden, um alle Header -Informationen gleichzeitig zu erhalten.
Eine HTTP -Anforderung wird an eine bestimmte IP -Adresse gesendet. Die meisten Server können jedoch mehrere Websites unter derselben IP -Adresse hosten, sodass der Server wissen muss, welchen Domänennamen die Browser -Anforderungen.
Host: rlog.cn
Dies ist nur ein grundlegender Hostname, einschließlich Domain -Namen und Kinderdomainnamen.
In PHP können Sie es über $ _server ['http_host'] oder $ _server ['server_name'] anzeigen.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Dieser Kopf kann die folgenden Informationen tragen:
Dies ist die allgemeine Methode, die von einigen Websites verwendet wird, um Besucherinformationen zu sammeln. Sie können beispielsweise feststellen, ob ein Besucher Ihr Telefon verwendet, um Ihre Website zu besuchen, und dann zu entscheiden, ob sie diese auf eine mobile Website leiten, die bei niedriger Auflösung eine gute Leistung erbringt.
In PHP kann User-Agent über $ _server ['http_user_agent'] erhalten werden.
if ( strstr($_SERVER['HTTP_USER_AGENT'],'MSIE 6') ) {
Echo bitte hör auf, IE6 zu verwenden!;
}
Accept-Language: en-us,en;q=0.5
Diese Informationen können die Standardspracheinstellungen des Benutzers angeben. Wenn die Website eine andere Sprachversion hat, können Sie diese Informationen verwenden, um den Browser des Benutzers umzuleiten.
Es kann in mehreren Sprachen durch Komma -Segmentierung getragen werden. Der erste ist die bevorzugte Sprache, und andere Sprachen haben einen Q -Wert, um die Präferenz des Benutzers für die Sprache (0 ~ 1) anzuzeigen.
Verwenden Sie $ _server [http_accept_loguage] in PHP, um diese Informationen zu erhalten.
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'fr') {
Header ('Ort: http://fremch.mydomain.com');
}
Accept-Encoding: gzip,deflate
Die meisten modernen Browser unterstützen die GZIP -Komprimierung und melden diese Informationen dem Server. Zu diesem Zeitpunkt wird das komprimierte HTML an den Browser gesendet. Dies kann die Dateigröße um fast 80% reduzieren, um die Download -Zeit und die Bandbreite zu sparen.
Diese Informationen können mit $ _server [http_accept_encoding] in PHP erhalten werden. Dann wird der Wert automatisch erkannt, wenn die Methode obs_gzhandler () aufgerufen wird, sodass Sie sie nicht manuell erkennen müssen.
// enables output buffering
// und alle Ausgaben werden komprimiert, wenn der Browser es unterstützt
ob_start ('ob_gzhandler');
Wenn in Ihrem Browser eine Seite zwischengespeichert wurde, prüft das nächste Mal, wenn Sie den Browser durchsuchen, ob das Dokument geändert wurde, und sendet einen Kopfball wie diesen:
If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT
Wenn es seit dieser Zeit nicht geändert wurde, gibt der Server 304 nicht geändert und gibt den Inhalt nicht zurück. Der Browser liest Inhalte automatisch im Cache
In PHP können Sie $ _server ['http_if_modified_Since'] verwenden, um zu erkennen.
// assume $last_modify_time was the last the output was updated
// Hat der Browser den Header mit dem modifizierten Since gesendet?
if (isset ($ _ server ['http_if_modified_Since'])) {
// Wenn der Browser -Cache mit der modifizierten Zeit übereinstimmt
if ($ last_modify_time == strtotime ($ _ server ['http_if_modified_Since'])) {
// Senden Sie einen 304 -Header und keinen Inhalt
Header (HTTP/1.1 304 nicht geändert);
Ausfahrt;
}
}
Es gibt auch einen HTTP -Header namens ETAG, der verwendet wird, um festzustellen, ob die zwischengespeicherten Informationen korrekt sind, und wir werden sie später erklären.
Wie der Name schon sagt, wird Cookie -Informationen, die in Ihrem Browser gespeichert sind, an den Server gesendet.
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120; foo=bar
Es handelt sich um eine Reihe von Namenswertpaaren, die durch Semikolonen geteilt sind. Cookies können auch Sitzungs -ID enthalten.
In PHP kann ein einzelner Cookie erhalten werden, indem Sie auf das $ _cookie -Array zugreifen. Sie können das $ _Session -Array direkt verwenden, um die Sitzungsvariable zu erhalten. Wenn Sie die Sitzungs -ID benötigen, können Sie die Funktion Session_id () anstelle des Cookies verwenden.
echo $_COOKIE['foo'];
// Ausgabe: Bar
echo $ _cookie ['phpSessid'];
// Ausgabe: R2T5UVJQ435R4Q7IB3VTDJQ120
Session_Start ();
echo Session_id ();
// Ausgabe: R2T5UVJQ435R4Q7IB3VTDJQ120
Wie der Name schon sagt, enthält der Header überweisende URL -Informationen.
Zum Beispiel habe ich die Startseite von Nettus+ besucht und auf einen Link geklickt. Dieser Header wird an den Browser gesendet:
Referer: http://net.tutsplus.com/
In PHP kann der Wert von $ _server ['http_referer'] erhalten werden.
if (isset($_SERVER['HTTP_REFERER'])) {
$ url_info = parse_url ($ _ server ['http_referer']);
// kommt der Surfer aus Google?
if ($ url_info ['host'] == 'www.google.com') {
parse_str ($ url_info ['query'], $ vars);
Echo Sie haben bei Google nach diesem Keyword gesucht :. $ vars ['q'];
}
}
// Wenn die überweisende URL war:
// http://www.google.com/search?source=ig&hl=en&rlz=&=&q=http+Header&aq=f&oq=&aqi=g-p1g9
// Die Ausgabe wird sein:
// Sie haben bei Google nach diesem Schlüsselwort gesucht: HTTP -Header
Möglicherweise haben Sie bemerkt, dass das Wort Referrer als Referator falsch geschrieben ist. Leider machte es die offiziellen HTTP -Spezifikationen wie diese und blieb fest.
Wenn eine Seite eine Autorisierung erfordert, wird der Browser ein Anmeldungsfenster angezeigt. Nach der Eingabe des richtigen Kontos sendet der Browser eine HTTP -Anfrage, enthält jedoch einen Header:
Authorization: Basic bXl1c2VyOm15cGFzcw==
Dieser Teil der im Header enthaltenen Informationen ist Base64 codiert. Beispielsweise wird Base64_Decode ('BXL1C2VYOM15CGFZCW ==') in 'MyUser: MyPass' konvertiert.
In PHP kann dieser Wert mit $ _server ['php_auth_user'] und $ _server ['php_auth_pw'] erhalten werden.
Wir werden weitere Details im Abschnitt www-authenticate erläutern.
Lassen Sie mich nun einige HTTP -Antwortinformationen in gemeinsamen HTTP -Headern verstehen.
In PHP können Sie die Header -Antwortinformationen über Header () festlegen. PHP hat automatisch einige erforderliche Header -Informationen gesendet, z. B. geladene Inhalte, Einstellen von Cookies usw. Sie können die gesendeten und über die Funktion header_list () sehen. Sie können auch die Funktion Header_Sent () verwenden, um zu überprüfen, ob die Header -Informationen gesendet wurden.
W3.org ist definiert als: Das Feld Cache-Control-General-Header wird verwendet, um Anweisungen anzugeben, die von allen Caching-Mechanismen entlang der Anfrage/Antwortkette befolgt werden müssen. Wo Caching -Mechanismen einige Gateway- und Proxy -Informationen enthalten, die Ihr ISP verwendet.
Zum Beispiel:
Cache-Control: max-age=3600, public
Öffentlichkeit bedeutet, dass die Antwort von jedem zwischengespeichert werden kann, und maximales Alter gibt die Anzahl der Sekunden an, die der Cache gültig ist. Ermöglicht Ihre Website zwischengespeichert, um die Download -Zeit und die Bandbreite erheblich zu verkürzen und gleichzeitig den Browser -Ladegeschwindigkeit zu verbessern.
Sie können Cache auch deaktivieren, indem Sie den Befehl no-cache einstellen:
Cache-Control: no-cache
Weitere Informationen finden Sie in W3.org.
Dieser Header enthält den MIME-Typ des Dokuments. Der Browser entscheidet, wie das Dokument basierend auf diesem Parameter analysiert wird. Beispielsweise gibt eine HTML -Seite (oder eine PHP -Seite mit HTML -Ausgabe) so etwas zurück:
Content-Type: text/html; charset=UTF-8
"Text" ist der Dokumenttyp und "HTML" ist der Dokument -Subtyp. Dieser Header enthält auch weitere Informationen wie Charset.
Wenn es sich um ein Bild handelt, wird eine Antwort wie diese gesendet:
Content-Type: image/gif
Der Browser kann mit dem MIME-Typ entscheiden, ob externe Programme verwendet werden oder das Dokument selbst erweitert werden soll. Das folgende Beispiel senkt den Anruf bei Adobe Reader:
Content-Type: application/pdf
Laden Sie direkt, Apache beurteilen normalerweise automatisch den MIME-Typ des Dokuments und fügt dem Header entsprechende Informationen hinzu. Darüber hinaus haben die meisten Browser ein gewisses Maß an Verwerfungstoleranz. Wenn der Header die Informationen nicht falsch bereitstellt oder falsch liefert, erkennt er automatisch den MIME-Typ.
Hier finden Sie eine Liste der häufig verwendeten Mime-Typen.
In PHP können Sie die IME-Typ der Datei verwenden.
In diesem Header wird der Browser angeben, ein Datei -Download -Fenster zu öffnen, anstatt zu versuchen, den Inhalt der Antwort zu analysieren. Zum Beispiel:
Content-Disposition: attachment; filename=download.zip
Es führt dazu, dass der Browser einen solchen Dialog hat:
Beachten Sie, dass die Headerinformationen vom Typ Inhalt, die ebenfalls entspricht, gesendet werden.
Content-Type: application/zip
Inhaltsdisposition: Anhang; Dateiname = download.zip
Wenn der Inhalt in den Browser übertragen werden soll, kann der Server diesen Header verwenden, um den Browser über die Größe (Bytes) der zu übertragenden Datei zu informieren.
Content-Length: 89123
Diese Informationen sind für Datei -Downloads sehr nützlich. Aus diesem Grund kennt der Browser den Fortschritt des Downloads.
Zum Beispiel habe ich hier ein virtuelles Skript geschrieben, um einen langsamen Download zu simulieren.
// it's a zip file
Header ('Inhaltstyp: Anwendung/ZIP');
// 1 Million Bytes (ca. 1 Megabyte)
Header ('Inhaltslänge: 1000000');
// Laden Sie einen Download -Dialog und speichern Sie es als Download.zip
Header ('Inhaltsdisposition: Anhang; Dateiname = download.zip');
// 1000 mal 1000 Bytes Daten
für ($ i = 0; $ i <1000; $ i ++) {
echo str_repeat (., 1000);
// schlafen, um den Download zu verlangsamen
Usleep (50000);
}
Das Ergebnis wird wie folgt sein:
Jetzt kommentiere ich den Header der Inhaltslänge:
// it's a zip file
Header ('Inhaltstyp: Anwendung/ZIP');
// Der Browser kennt die Größe nicht
// Header ('Inhaltslänge: 1000000');
// Laden Sie einen Download -Dialog und speichern Sie es als Download.zip
Header ('Inhaltsdisposition: Anhang; Dateiname = download.zip');
// 1000 mal 1000 Bytes Daten
für ($ i = 0; $ i <1000; $ i ++) {
echo str_repeat (., 1000);
// schlafen, um den Download zu verlangsamen
Usleep (50000);
}
Das Ergebnis wurde Folgendes:
Dieser Browser sagt Ihnen nur, wie viel Sie heruntergeladen haben, aber Sie werden Ihnen nicht sagen, wie viel Sie insgesamt herunterladen müssen. Und die Fortschrittsleiste wird keinen Fortschritt zeigen.
Dies ist eine weitere Headerinformation, die für Cache generiert wird. Es wird so aussehen:
Etag: pub1259380237;gz
Der Server kann auf diese Informationen mit jeder gesendeten Datei an den Browser antworten. Dieser Wert kann das zuletzt geänderte Datum, Dateigröße oder Dateiprüfungsumme des Dokuments enthalten. Durch das Durchsuchen wird es mit dem empfangenen Dokument ausgespeichert. Wenn der Browser das nächste Mal dieselbe Datei anfordert, wird die folgende HTTP -Anfrage gesendet:
If-None-Match: pub1259380237;gz
Wenn der angeforderte Dokument -ETAG -Wert damit übereinstimmt, sendet der Server einen 304 -Statuscode anstelle von 2OO. Und es wird kein Inhalt zurückgegeben. Der Browser lädt die Datei zu diesem Zeitpunkt aus dem Cache.
Wie der Name schon sagt, verwendet diese Header -Informationen das GMT -Format, um die letzte Änderungszeit des Dokuments anzugeben:
Last-Modified: Sat, 28 Nov 2009 03:50:37 GMT
$modify_time = filemtime($file);
Header (Last-modifiziert:.
Es bietet einen weiteren Caching -Mechanismus. Der Browser kann eine solche Anfrage senden:
If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT
Wir haben es bereits im Abschnitt "If-Modified-Since" besprochen.
Dieser Header wird zur Umleitung verwendet. Wenn der Antwortcode 301 oder 302 ist, muss der Server den Header senden. Wenn Sie beispielsweise http://www.nettus.com besuchen, erhält der Browser die folgende Antwort:
HTTP/1.x 301 Moved Permanently
...
Ort: http://net.tutsplus.com/
...
In PHP können Sie Besucher auf diese Weise umleiten:
header('Location: http://net.tutsplus.com/');
Standardmäßig wird der 302 -Statuscode gesendet. Wenn Sie 301 senden möchten, schreiben Sie es einfach wie folgt:
header('Location: http://net.tutsplus.com/', true, 301);
Wenn eine Website die von Ihnen stöberenden Cookie -Informationen festlegen oder aktualisieren muss, wird ein solcher Header verwendet:
Set-Cookie: skin=noskin; path=/; domain=.amazon.com; expires=Sun, 29-Nov-2009 21:42:28 GMT
Set-Cookie: Session-ID = 120-7333518-8165026; Path =/; Domain = .amazon.com; läuft ab = Sa 27. Februar 08:00:00 2010 GMT
Jeder Cookie wird als separater Kopfzeile verwendet. Beachten Sie, dass das Einstellen von Cookies über JS nicht im HTTP -Header reflektiert wird.
In PHP können Sie Cookies über die Funktion setCookie () einstellen, und PHP sendet entsprechende HTTP -Header.
setcookie(TestCookie, foobar);
Es wird einen Kopfball wie diesen senden:
Set-Cookie: TestCookie=foobar
Wenn die Ablaufzeit nicht angegeben ist, wird der Cookie nach Abschluss des Browsers gelöscht.
Eine Website kann diese Header -Informationen über HTTP senden, um die Benutzer zu überprüfen. Ein Popup-Fenster öffnet sich, wenn der Browser diese Antwort im Kopf sieht.
WWW-Authenticate: Basic realm=Restricted Area
Es wird so aussehen:
In einem Kapitel des PHP -Handbuchs gibt es einen einfachen Code, der zeigt, wie man mit PHP so etwas macht:
if (!isset($_SERVER['PHP_AUTH_USER'])) {
Header ('www-authenticate: grundlegender Bereich = mein Bereich');
Header ('http/1.0 401 nicht autorisiert');
Echo 'Text zum Senden, wenn die User Treffer Schaltfläche abbrechen';
Ausfahrt;
} anders {
echo <p> Hallo {$ _server ['php_auth_user']}. </p>;
echo <p> Sie haben {$ _server ['php_auth_pw']} als Passwort eingegeben. </p>;
}
Dieser Header wird normalerweise festgelegt, wenn der Rückgabinhalt komprimiert wird.
Content-Encoding: gzip
Wenn Sie in PHP die Funktion OB_GzHandler () aufrufen, wird dieser Header automatisch festgelegt.
Originaladresse: http://css9.net/all-about-http-headers/