Dienstag, 17. Januar 2017, 08:32
Gnädiger Apache 2.2
Auch wenn CRLF der offizielle Trenner im http-Protokoll ist, hilft das hier vielleicht dem ein oder anderen, der sich wundert, warum eine eingene (meist Mini-)Implementierung für http nicht mehr funktioniert: Es könnte an CRLF vs. LF liegen.
Der Apache 2.4 ist da offensichtlich deutlich kritischer, er akzeptiert nur CRLF (könnte an den Defaults in der Config liegen - das habe ich jetzt nicht explizit geprüft). Der Apache 2.2 ist da noch etwas gnädiger, er erlaubt sogar ein Mischen in einem Request.
Auch wenn ich weiß, dass man selten eine eigene http-"Implementierung" (das ist jetzt schon maßlos übertrieben) schreibt, so braucht man das unserer Erfahrung nach schon mal, z.B. wenn man aus einem bestehenden System heraus keinen externen Befehl aufrufen darf/kann, oder man in C/C++ unterwegs ist. Oder weil man es will
Nachtrag 08:32 Uhr
Die simple Antwort des Apache 2.4 ist ein "400 Bad Request". Mehr will er einem ungnädigerweise nicht sagen
Der Apache 2.4 ist da offensichtlich deutlich kritischer, er akzeptiert nur CRLF (könnte an den Defaults in der Config liegen - das habe ich jetzt nicht explizit geprüft). Der Apache 2.2 ist da noch etwas gnädiger, er erlaubt sogar ein Mischen in einem Request.
Auch wenn ich weiß, dass man selten eine eigene http-"Implementierung" (das ist jetzt schon maßlos übertrieben) schreibt, so braucht man das unserer Erfahrung nach schon mal, z.B. wenn man aus einem bestehenden System heraus keinen externen Befehl aufrufen darf/kann, oder man in C/C++ unterwegs ist. Oder weil man es will
Nachtrag 08:32 Uhr
Die simple Antwort des Apache 2.4 ist ein "400 Bad Request". Mehr will er einem ungnädigerweise nicht sagen
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Der Adminbloger
2.4.23
2.4.25
Der Adminblogger
Konfigurationsoption HttpProtocolOptions:
https://httpd.apache.org/docs/current/en/mod/core.html#httpprotocoloptions
Manuel Schmitt (manitu)
Max
Ich hatte stundenlang mit der Meldung "400 Bad Request" gekämpft; die Versionshinweise und Docker-Beispiele im Kommentar haben mich dann zur Lösung gebracht.
VIELEN DANK!