Ich verwende ein "lustiges" HTML-Sonderzeichen (✰) (siehe http://html5boilerplate.com/ für weitere Informationen) für einen Server
HTTP-Header und frage mich, ob es pro Spezifikation "erlaubt" ist.
Wenn ich die Registerkarte "Netzwerk" in den Entwicklertools in Chrome unter Windows XP Pro SP 3 verwende, sehe ich das ✰ in Ordnung.
In IE8 wird das ✰ nicht korrekt gerendert.
Der HTML-Validator von w3.org rendert es nicht korrekt (zeigt
â°
stattdessen " " an).
Jetzt bin ich nicht besonders scharf auf Charaktercodierungen ... und ehrlich gesagt interessieren sie mich nicht wirklich. Ich benutze nur blind UTF-8, weil ich dazu aufgefordert werde. :-)
Wird die Ungleichheit durch Fehler in den verschiedenen Parsern / Browsern / Engines / (wie auch immer sie genannt werden) verursacht?
Gibt es eine Spezifikation dafür oder vielleicht eine Liste zulässiger Zeichen für einen HTTP-Header "Wert"?
quelle
Antworten:
Kurz gesagt: Nur ASCII funktioniert garantiert. Einige Nicht-ASCII-Bytes sind aus Gründen der Abwärtskompatibilität zulässig, sollten jedoch nicht angezeigt werden können.
HTTPbis gab auf und gab an, dass es in den Headern außer ASCII keine nützliche Codierung gibt:
Zuvor definierte RFC 2616 von 1999 Folgendes:
und RFC 2047 ist die MIME-Codierung , also wäre es:
aber ich denke nicht, dass viele (wenn überhaupt) Kunden dies unterstützen.
quelle
Bitte lesen Sie zuerst die Kommentare. Diese Antwort zieht wahrscheinlich falsche Schlussfolgerungen aus den richtigen Quellen und muss bearbeitet werden.
Sie können beliebige druckbare ASCII-Zeichen und keine speziellen Zeichen wie ✰ verwenden (was nicht ASCII ist ).
Tipp : Sie können alles in JSON codieren.
Bearbeiten : Möglicherweise zunächst nicht offensichtlich. Die im Header definierte Zeichenkodierung gilt nur für den Antworttext, nicht für den Header selbst. (Als würde es ein Henne-Ei-Problem verursachen.)
Ich möchte die entsprechenden Definitionen alle zusammenzufassen gemäß der Spezifikation durch Penchant verknüpft.
Wir sind also hinter dem Feldwert her .
LWS steht für Linear White Space. Im Wesentlichen ist LWS Leerzeichen oder Tabulator, aber Sie können Ihren Feldwert in mehrere Zeilen aufteilen, indem Sie eine neue Zeile vor einem Leerzeichen oder Tabulator beginnen.
Vereinfachen wir es folgendermaßen:
Jetzt sind wir nach Feldinhalten .
TEXT ist der allgemeinste und beinhaltet den ganzen Rest - also vergiss den Rest -. Hier ist der US-ASCII-Zeichensatz (= ASCII)
Wie Sie sehen können, sind alle druckbaren ASCII-Zeichen zulässig.
quelle
OCTET
s, und daTEXT
es keineOCTET
Ausnahme gibt0 - 31
, bedeutet dies, dass alleOCTET
s von32
bis255
zulässig sind . Die Oktetts ✰ sind226
,156
und176
alle drei von ihnen erlaubt, daher ✰ darf nach den Durchlässen Sie zitiert.CTLs
"? Ist es die Zeichen bedeutenCR
,LF
sind erlaubt? Oder heißt das, dass nur die fortlaufende Folge "CR
LF
SP
/HT
" erlaubt ist? (Mit anderen Worten kann, Header - Werte ein einzelnes enthaltenCR
oderLF
oderHT
Can - Header - Werte enthalten die Zeichen?CR
,LF
UndHT
in beliebiger Reihenfolge und Menge?)