Каковы потенциальные проблемы использования text / plain в качестве типа контента для XML по HTTP? - PullRequest
4 голосов
/ 10 ноября 2011

Я работаю над проектом, в котором у третьей стороны работает среда .NET, предоставляющая службы в стиле REST, которые отправляют и получают XML по HTTP.Моя сторона проекта на самом деле полностью посвящена Java.

Я построил всю часть системы Java, предполагая, что POSTing или PUTing XML-документы с заголовком Content Type, равным «application / xml»было бы хорошо (учитывая, что это является частью спецификации XML и связанной RFC!).

В любом случае, теперь команда .NET говорит, что это должен быть текстовый / простой текст, иначе их сервер отклонит запрос икажется, что они не могут или не знают, как это изменить.

Итак, каковы последствия отправки XML по HTTP с использованием обычного текста в качестве типа контента?Есть ли какие-то тонкие «ошибки» или нет ничего особенного?

Спасибо

Ответы [ 2 ]

4 голосов
/ 10 ноября 2011

Если не указан параметр charset, charset для text / plain - это us-ascii. Набор символов, определенный в типе mime, имеет приоритет над набором символов, определенным в документе xml, поэтому, если документ xml не является us-ascii, правильный клиент неправильно проанализирует xml.

4.1.2 RFC 2046 гласит, что для текста / обычного текста

Набор символов по умолчанию, который должен приниматься при отсутствии параметр charset, US-ASCII.

Даже при использовании text / xml кодировка по умолчанию - us-ascii, из раздела 3.1 RFC 3023 ,

Соответствует [RFC2046], если объект text / xml получен с параметр charset опущен, MIME-процессоры и XML-процессоры ДОЛЖНЫ использовать значение кодировки по умолчанию "us-ascii"

Если вы используете text / plain с правильным заданным набором символов, набор символов теперь задается дважды, поэтому лучше использовать application / xml, с которым не связан набор символов по умолчанию, и пусть набор символов будет объявлен XML-документ.

Здесь есть интересный пост здесь .

0 голосов
/ 10 ноября 2011

Просто убедитесь, что в будущем вы сможете проследить этот запрос на изменение, почему вы указали тип содержимого как text / plain.Так что, если вас спросят, вы можете посмотреть на код и обосновать свою реализацию против первоначального намерения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...