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.