Henryk Plötz: Header und Body eines HTTP-Response sicher trennen

Beitrag lesen

Moin,

Aber ist das auch sicher? Zum einen, wird das auf jedem Server mit \r\n\r\n umgebrochen?

Wenn du dir _wirklich_ganz_sicher_ bist, dass dein Gegenüber richtiges HTTP spricht, kannst du das so machen (zusammen mit der genannten Einschränkung auf 2 Ergebnisse). Da wir aber nicht in einer perfekten Welt leben hat sich schon vor längerer Zeit die Empfehlung "be strict in what you send and liberal in what you accept" (in verschiedenen Variationen) verbreitet. Wenn dein Gegenüber also an einem Mac sitzt kann dir schon mal ein \r\r entgegenfliegen, an Unixen ein \n\n und wenn es ganz wild kommt auch diverse Variationen. Ich hatte im Archiv glaube ich schonmal eine Variante mit strpos (o.ä.) gepostet die versuchte halbwegs intelligent zu sein.

Wenn du eine Lösung mit nur einem Befehl willst, gefällt mir Klaus' zweite Variante am besten, bis auf zwei Probleme: a) würde der regexp auch \r\n als Trenner aktzeptieren und b) ist laut Doku split() nicht binärsicher. Versuch' lieber etwas in der Art von (\r\n\r\n|\r\r|\n\n) zusammen mit preg_split. Wenn du magst, kannst du auch noch \r\r\n und \r\n\n als besonders komische Konstrukte aufnehmen (die anderen möglichen Kombination sind glaube ich alle uneindeutig).

--
Henryk Plötz
Grüße aus Berlin