Я использую «забавный» специальный символ HTML (✰) (см. Http://html5boilerplate.com/ для получения дополнительной информации) для Server
HTTP-заголовка, и мне интересно, «разрешено» ли это согласно спецификации.
Используя вкладку «Сеть» в инструментах разработчика в Chrome в Windows Xp Pro SP 3, я вижу ✰ нормально.
В IE8 ✰ это не вынесено правильно.
Валидатор HTML w3.org не отображает его правильно (
â°
вместо этого отображает " ").
Я не слишком увлекаюсь кодировками символов ... и, честно говоря, я не особо забочусь о них; Я просто слепо использую UTF-8, потому что мне сказали. :-)
Вызвано ли несоответствие ошибками в разных парсерах / браузерах / движках / (как бы они ни назывались)?
Есть ли для этого спецификация или, может быть, список разрешенных символов для «значения» HTTP-заголовка?
источник
Ответы:
Вкратце: гарантированно работает только ASCII. Некоторые байты, отличные от ASCII, разрешены для обратной совместимости, но не должны отображаться.
HTTPbis сдался и уточнил, что в заголовках нет полезной кодировки, кроме ASCII:
Ранее RFC 2616 от 1999 определял это:
а RFC 2047 - это кодировка MIME , поэтому это будет:
но я не думаю, что многие (если таковые имеются) клиенты его поддерживают.
источник
Пожалуйста, сначала прочитайте комментарии, этот ответ, вероятно, делает неправильные выводы из правильных источников, требует редактирования.
Вы можете использовать любые печатаемые символы ASCII и не использовать специальные символы, такие как ✰ (который не является ASCII )
Совет : в JSON можно кодировать все, что угодно.
Изменить : сначала может быть неочевидно, кодировка символов, определенная в заголовке, применяется только для тела ответа, а не для самого заголовка. (Так как это может вызвать проблемы с курицей и яйцом.)
Я хотел бы суммировать все соответствующие определения согласно спецификации, связанной с Penchant.
Итак, мы ищем значение поля .
LWS расшифровывается как Linear White Space. По сути, LWS - это пробел или табуляция, но вы можете разбить значение поля на несколько строк, начав новую строку перед пробелом или табуляцией.
Давайте упростим это до следующего:
Теперь нам нужно содержимое поля .
ТЕКСТ является наиболее общим и включает в себя все остальное, так что забудьте об остальном. Вот кодировка US-ASCII (= ASCII)
Как видите, разрешены все печатаемые символы ASCII.
источник
OCTET
s, а SinceTEXT
- любое,OCTET
кроме0 - 31
, это означает, что разрешены всеOCTET
s от32
до . В октета ✰ есть , и и все три из них допускаются, поэтому ✰ допускается в соответствии с проходами вы цитируемых.255
226
156
176
CTLs
"? Означает ли это символыCR
,LF
которые разрешены? Или это означает, что разрешена только непрерывная последовательность "CR
LF
SP
/HT
"? (Другими словами, может заголовок значения содержат одинCR
илиLF
илиHT
значения заголовка может содержать символы?CR
,LF
ИHT
в любом порядке и количестве?)