2009-05-03 4 views
23

Wenn ein Browser eine HTTP-Anfrage an einen Webserver sendet, welche Kodierung wird verwendet, um das HTTP-Protokoll auf der Leitung zu verschlüsseln? Ist es ASCII? UTF8? oder UTF16? Oder gibt sie an, welche Codierung sie in einem vordefinierten Format verwendet (bevor eine Decodierung stattfindet?)Welche Codierung wird vom HTTP-Protokoll verwendet?

S.S Ich frage nicht nach der tatsächlichen Nutzlast (z. B. HTML) der Anfrage/Antwort. Ich frage über die Anforderungsleitung (dh GET /index.html HTTP/1.1) und Header (dh Host: google.com)

Antwort

7

RFC 2616 umfasst dies:

OCTET   = <any 8-bit sequence of data> 
CHAR   = <any US-ASCII character (octets 0 - 127)> 
UPALPHA  = <any US-ASCII uppercase letter "A".."Z"> 
LOALPHA  = <any US-ASCII lowercase letter "a".."z"> 
ALPHA   = UPALPHA | LOALPHA 
DIGIT   = <any US-ASCII digit "0".."9"> 
CTL   = <any US-ASCII control character 
        (octets 0 - 31) and DEL (127)> 
CR    = <US-ASCII CR, carriage return (13)> 
LF    = <US-ASCII LF, linefeed (10)> 
SP    = <US-ASCII SP, space (32)> 
HT    = <US-ASCII HT, horizontal-tab (9)> 
<">   = <US-ASCII double-quote mark (34)> 

Und dann so ziemlich alles andere in dem Dokument in Bezug auf diesen Einheiten definiert (OCTET, CHAR usw.). Sie können also über den RFC nachsehen, welche Teile einer HTTP-Anfrage/Antwort OCTET s enthalten können; Alle anderen Teile müssen ASCII sein. (Ich würde es selbst tun, aber es würde eine lange Zeit dauern)

Für die Anfrage Zeile speziell, die Methodenname und HTTP-Version werden nur ASCII-Zeichen, aber es ist möglich, dass die URL selbst enthalten könnte Nicht-ASCII-Zeichen. Aber wenn Sie RFC 2396 betrachten, sagt es das.

Ein URI ist eine Folge von Zeichen aus einem sehr begrenzten Satz, d. H. Die Buchstaben des lateinischen Grundalphabetes, Ziffern und einige Sonderzeichen.

Was ich denke, bedeutet, dass es auch aus ASCII-Zeichen bestehen wird.

20

HTTP 1.1 verwendet US-ASCII als Basiszeichensatz für die request line in Anfragen, die status line in Antworten (mit Ausnahme der reason phrase) und die field names sondern ermöglicht es jedes Oktett in den Feldwerten und die message body.

+2

Ich weiß, wir sollten ** einen Grundsatz erwarten, aber meinst du, es ist ein ** außer ** - Ion zu? ;-) – Lucius