Вопрос по поводу Accept-Charset

EM
На сайте с 16.12.2005
Offline
108
464

Здравствуйте,

не смог ничего толком найти, подскажите пожалуйста.

Любой агент отправляет заголовки, среди которых поддерживаемые кодировки.

Например:

Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7

Но что, если запрашиваемая страница существует в другой кодировке? Предусмотрен ли какой-либо стандарт, требующий определенных действий со стороны сервера? Он должен перекодировать страницу в одну из поддерживаемых агентом? А если ни одна из кодировок агента сервером не поддерживается, должен ли он отдать заголовок о какой-либо серверной 50х - ошибке? Какой? Или отдавать страницу как есть, тогда клиент должен сформировать что-то вроде HTTP 1/1 40х Error?

N
На сайте с 06.05.2007
Offline
419
#1
Предусмотрен ли какой-либо стандарт, требующий определенных действий со стороны сервера?

Такие вопросы решаются прочтением оригинального стандарта - rfc 2616.

Касательно обязательности перекодировки там ничего не написано, а значит поведение на усмотрение конкретной реализации сервера. Например, проект russian apache умел перекодировать документы в ту кодировку, которую хотел клиент. Но он давным давно умер.

Касательно ошибки написано вот что :

If an Accept-Charset header is present,
and if the server cannot send a response which is acceptable
according to the Accept-Charset header, then the server SHOULD send
an error response with the 406 (not acceptable) status code, though
the sending of an unacceptable response is also allowed.

Формулировка, конечно, дебильная. ДОЛЖЕН отдать 406, хотя можешь и не отдавать.

То есть, не запрещено отдать документ в неправильной кодировке, что мы до сих пор в эру побидившего UTF8 и наблюдаем на некоторых сайтах.

Кнопка вызова админа ()

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий