Ich versuch's mal anhand eines Beispiels zu erklären: Angenommen, ich möchte die Website
http://example.org/ aufrufen und gebe diesen URL in das Adressfeld meines Browsers ein und bestätige die Eingabe mit der Eingabetaste. Im Hintergrund verarbeitet mein Browser nun die Eingabe und verfasst einen HTTP-Request, der wie folgt aussehen könnte:
Code:
GET / HTTP/1.1
Host: example.org
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.6) Gecko/20050321 Firefox/1.0.2
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-DE,de;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 300
Connection: keep-alive
Bei der Anfrage sendet mein Browser (Firefox 1.0.2) ein paar Informationen, die für den Webserver von Interesse sein könnte; beispielsweise die vom Browser akzeptierten oder bevorzugten Media-Typen, Sprachen oder Kodierungen.
Als Antwort erhalte ich beispielsweise Folgendes:
Code:
HTTP/1.x 200 OK
Date: Tue, 12 Apr 2005 15:26:57 GMT
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html
Dieser HTTP-Header teilt meinem Browser u. A. den Status der Anfrage (
200 OK), die Länge des Inhalts (
438) und auch den Media-Typen (
text/html, also schlichtes HTML) des nachfolgenden Inhalts mit. Nach dem oben beschriebenen Browser wird nun – solange die Anfrage akzeptiert und erfolgreich war, also kein Fehlerstatus zurückgesandt wird – der eigentliche Inhalt, in diesem Fall den Quellcode des HTML-Dokuments:
HTML:
<HTML>
<HEAD>
<TITLE>Example Web Page</TITLE>
</HEAD>
<body>
<p>You have reached this web page by typing "example.com",
"example.net",
or "example.org" into your web browser.</p>
<p>These domain names are reserved for use in documentation and are not available
for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC
2606</a>, Section 3.</p>
</BODY>
</HTML>
Wird nun jedoch versucht, nach der Ausgabe oder Teilausgabe des eigentlichen Inhalts einen HTTP-Header zu senden, bemerkt dies PHP und liefert dem entsprechend eine Fehlermeldung.
Ich hoffe, ich hab's verständlich beschrieben und euch nun nicht all zu sehr verwirrt.
Übrigens gibt es im Internet eine hilfreiche Websites, welche die Anfrage- und Antwort-Header aufzeichnen:
Web-Sniffer