2010-10-08 5 views
0

если у меня есть кодированные данные utf-8, безопасно ли отправлять их в тело HTTP? Дело в том, что данные utf-8 могут включать контрольные символы, включая нулевой символ (двоичный ноль), которые, конечно, не разрешены с помощью http RFC. Так что делать с такими данными? Кодировать их с base64?Является ли utf-8 безопасным для http?

С другой стороны, данные, которые у меня есть в utf-8, - это спецификация XML и XML, запрещает использование специальных символов (http://www.w3.org/TR/2006/REC-xml-20060816/# charsets) ...

Так что я думаю, что utf-8 небезопасен, но XML в utf-8 безопасен и может быть непосредственно встроен в тело http, например в MIME многоцелевой корпус без необходимости делать что-то наподобие quoted-printable кодирование.

BR Sten

ответ

4

HTTP позволяет посылать произвольные данные. Так да; UTF-8 безопасен для HTTP, но на захватной руке; 0x00 на самом деле не «безопасен» нигде. Оба тела запроса и ответа HTTP имеют методы для обработки произвольных данных, а также MIME (который обычно инкапсулирует тела HTTP POST), а именно: Length: -header.

Нет управляющего символа, который может привести к совместимой реализации HTTP, чтобы предположить, что тело выполнено, если оно не достигло Length :.

+0

utf-8 не имеет 0x00 – Andrey

+0

Привет Уильям, спасибо за ответ - Не знаю, почему я думал, что тело HTTP не допускает специальных символов ... Я идиот. Это делает мой вопрос неуместным. Большое спасибо за ответ! – STeN

+0

Привет, Андрей, utf-8 фактически разрешает все специальные символы ASCII ... Проверьте это RFC 3629, в котором говорится: «... символы US-ASCII закодированы в одном октете, имеющем нормальное значение US-ASCII ...» Это делает utf -8 обратная совместимость ... BR – STeN

2

Органы сообщений HTTP могут содержать произвольные данные (как указал Виллихем).

Кроме того, в HTTP есть кодировка с кавычками для печати, а также не требуется многочастное тело.

Как вы думаете, изображения в Интернете работают? :-)

+0

Привет, пример с изображениями более ясен. Причина, по которой я не думал о бинарниках в теле, заключается в том, что я работал на 99% в мире SIP, где base64 используется почти везде. Спасибо за ваше время. BR – STeN

Смежные вопросы