Was hat es mit HTTP-Headern auf sich?

HTTP-Header sind für viele Einsteiger in Webprogrammierung erst mal unbekannt. Wenn überhaupt, assoziert man das ohne weiteres Wissen gern mal mit dem <head>…</head> Bereich eines erzeugten oder statischen HTML-Dokuments. Aber das ist es definitiv nicht!

Um das zu erklären muss ich aber ein klein wenig ausholen.

Zuerst mal ein Flussdiagram das den Ablauf skizziert, was passiert wenn ein PHP-Script über den Webserver aufgerufen wird.

Am Anfang und Ende (1) ist der Mensch. Dieser klickt/tapt z.B. im Webbrowser (2) auf einen Link. Der Webbrowser erstellt darauf hin eine Anfrage (HTTP-Request) (3). Dieser besteht aus den HTTP-Headern und dem optionalen HTTP-Body. Der Body kommt z.B. bei POST-Requests zum Einsatz. Darin stehen dann alle POST Request-Parameter (z.B. Werte von Formularfeldern)

Die Header sind hier quasi Anordnungen (fast alle optional) von Client (Webbrowser) an den Server, und dahinterliegende Anwendungen wie das PHP-Script zu Themen wie „Welche Datei soll auf dem Server aufgerufen werden?“, „Wie soll vom Server gecacht werden?“ usw.

Diese 2 Elemente (HTTP Header & Body) werden dann zusammen, als eine große Zeichenkette, getrennt durch eine Leerzeile, an den Server geschickt.

Der Server sieht: Aha „/foo.php aufrufen“ und macht das prompt.

Das PHP Script (4) wird ausgeführt, arbeitet seinen Code ab und erzeugt irgend eine HTML-Ausgabe. Jedes Format ist denkbar aber HTML ist es halt recht oft. 🙂

Das was PHP dann als Ausgabe erzeugt (5) ist auch wieder ein Paket aus HTTP-Headern und dem HTTP-Body der im Beispiel das erzeugte HTML enthält.

In den HTTP-Headern stehen hier wieder die Metadaten zu dem was im Body steht (also das erzeugte HTML) z.B. Informationen zur Kodierung, Content-Type u.v.m.

Sobald die erste Ausgabe im PHP gemacht wird (das gilt auch für statisches HTML oder einfach nur Leerzeichen oder Zeilenumbrüche oder BOMs ausserhalb der PHP-Tags) müssen natürlich die HTTP-Header geschickt werden weil die immer zuerst kommen müssen. Der Body wird dan mit jeder Ausgabe die das Script erzeugt erweitert.

Diese Antwort (HTTP-Response) (5) wird dann über den Webserver zurück zum Client (2) geschickt der dann alles schön anhand der Metadaten (HTTP-Header) aufbereitet und darstellt.

Das wars auch schon.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert