Wie kann ein Zeilenumbruch-Literal im HTTP-Header vermieden werden?

9

Im HTTP-Header sind Zeilenumbrüche Token zum Trennen von Feldern in der Kopfzeile.

Aber wenn ich ein Zeilenumbruch-Literal in einem benutzerdefinierten Feld senden möchte, wie soll ich es umgehen?

    
Daniel Silveira 06.02.2009, 17:33
quelle

5 Antworten

8

Wenn Sie Ihr eigenes benutzerdefiniertes Erweiterungsfeld entwerfen, können Sie BASE64 oder quoted-printable verwenden, um den Wert zu umgehen (und den Wert zu entfernen).

    
Dennis C 06.02.2009, 17:48
quelle
5

Die Idee ist, dass HTTP ASCII - nur und Zeilenumbrüche und solche sind nicht erlaubt . Wenn Sender und Empfänger Ihre Kodierung interpretieren können, können Sie beliebig kodieren, was Sie wollen. So werden DNS-internationale Namen mit dem Header Host (PUNYCODE) behandelt.

Kurze Antwort ist: Sie nicht, es sei denn, Sie steuern sowohl Absender als auch Empfänger.

    
unixman83 28.12.2011 01:45
quelle
3

Laut RFC2616 4.2 Nachrichtenkopfzeilen : -

  

Header-Felder können über erweitert werden   mehrere Zeilen vor jedem Extra   Linie mit mindestens einem SP oder HT.

Ich nehme an, SP bedeutet ein Leerzeichen und HT bedeutet ein hartes Tab-Zeichen.

    
James Mead 06.02.2009 17:49
quelle
3

Die tatsächliche Antwort auf diese Frage ist, dass es keinen Standard für die Codierung von Zeilenumbrüchen gibt.

Sie können jede Binär-zu-Text-Codierung wie URL-Encoding oder Base64 verwenden , aber das funktioniert natürlich nur, wenn Sender und Empfänger die gleiche Methode implementieren.

RFC 2616 erlaubte es, Header-Werte über mehrere Zeilen zu "falten" (dh zu umbrechen), aber Die Zeilenumbrüche wurden als einzelnes Leerzeichen und nicht als Teil des analysierten Feldwerts behandelt.

Diese Spezifikation wurde jedoch durch RFC 7230 veraltet, was das Falten verbietet:

>
  

Früher konnten HTTP-Headerfeldwerte über mehrere Zeilen erweitert werden, indem jeder zusätzlichen Zeile mindestens ein Leerzeichen oder eine horizontale Registerkarte (obs-fold) vorangestellt wurde.
Diese Spezifikation gilt nicht mehr Zeilenumbruch außer innerhalb des message/http Medientyps ( Abschnitt 8.3.1 ) .
Ein Absender MUSS NICHT eine Nachricht generieren, die Zeilenumbruch enthält

Ein Standard für Zeilenumbrüche in HTTP-Header-Feldwerten wurde nicht - und wurde nie - festgelegt.

    
jomo 05.10.2015 16:28
quelle
1

Wenn es ein benutzerdefiniertes Feld ist, wie Sie es umgehen, hängt es vollständig davon ab, wie die Zielanwendung es analysieren wird. Wenn dies ein Add-on ist, das Sie erstellt haben, könnten Sie bei der URL-Kodierung bleiben, da es ziemlich probiert und viele Sprachen Kodierungs- / Dekodiermethoden eingebaut haben, damit Ihre Web-App es und Ihren Plug-in (oder was auch immer Sie gerade arbeiten) kodieren ) würde es entschlüsseln.

    
Spencer Ruport 06.02.2009 17:48
quelle

Tags und Links