Ответ 1
HTTP 1.1 использует US-ASCII в качестве базового набора символов для строки запроса в запросах, строка состояния в ответах (кроме причина фразы) и но позволяет использовать любой октет в значениях поля и тело сообщения.
Когда браузер отправляет HTTP-запрос на веб-сервер, какая кодировка используется для кодирования протокола HTTP на проводе? Это ASCII? UTF8? или UTF16? Или он указывает, какую кодировку он использует в предопределенном формате (до того, как произойдет какое-либо декодирование?)
P.S
Я не спрашиваю о фактической полезной нагрузке (например, HTML) запроса/ответа. Я спрашиваю о строке запроса (т.е. GET /index.html HTTP/1.1
) и заголовках (т.е. Host: google.com
)
HTTP 1.1 использует US-ASCII в качестве базового набора символов для строки запроса в запросах, строка состояния в ответах (кроме причина фразы) и но позволяет использовать любой октет в значениях поля и тело сообщения.
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-запроса/ответа могут включать OCTET
s; все остальные части должны быть ASCII. (Я бы сделал это сам, но это займет много времени)
Для строки запроса конкретно имя метода и версия HTTP должны быть только ASCII-символами, но возможно, что сам URL-адрес может содержать символы, отличные от ASCII. Но если вы посмотрите на RFC 2396, это говорит о том, что.
URI - это последовательность символов из очень ограниченного набора, то есть буквы основного латинского алфавита, цифры и несколько специальных символов.
Я предполагаю, что он будет состоять из символов ASCII.