37

ブラウザが HTTP リクエストを Web サーバーに送信するとき、回線上で HTTP プロトコルをエンコードするためにどのエンコーディングが使用されますか? アスキーですか?UTF8? またはUTF16?それとも、事前定義された形式で使用するエンコーディングを指定しますか (デコードが行われる前に?)

PS リクエスト/レスポンスの実際のペイロード (HTML など) について質問しているわけではありません。GET /index.html HTTP/1.1リクエスト行 (つまり) とヘッダー (つまりHost: google.com)について質問しています

4

2 に答える 2

34

HTTP 1.1 は、要求の要求行、応答のステータス行(理由フレーズを除く)、およびフィールド名の基本文字セットとして US-ASCII を使用しますが、フィールド値とメッセージ本文では任意のオクテットを許可します。

于 2009-05-03T22:28:27.687 に答える
17

RFC 2616には次の内容が含まれています。

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)>

そして、ドキュメント内の他のほとんどすべてが、これらのエンティティ ( 、 など) に関して定義されOCTETますCHAR。したがって、RFC を調べて、HTTP 要求/応答のどの部分にOCTETs;を含めることができるかを調べることができます。他のすべての部分は ASCII でなければなりません。(自分でやりたいけど時間かかりそう)

特にリクエスト行では、メソッド名と HTTP バージョンは ASCII 文字のみになりますが、URL 自体に非 ASCII 文字が含まれる可能性があります。しかし、 RFC 2396を見ると、そう書かれています。

URI は、非常に限られたセット (基本的なラテン アルファベットの文字、数字、およびいくつかの特殊文字) からの一連の文字です。

これは、ASCII文字でも構成されることを意味すると思います。

于 2009-05-03T22:25:51.157 に答える