Канонический и запрошенный тип в содержании - PullRequest
0 голосов
/ 24 августа 2009

Поэтому мне было интересно, что делать с согласованием содержимого HTTP для запросов, в которых возвращаемые данные могут иметь несколько допустимых типов MIME.

Например, если, скажем, у меня есть произвольные данные, которые имеют следующие возможные типы MIME:

text/data,application/x-data,application/data+xml

Учитывая, что возможно несколько типов MIME, клиентское приложение, запрашивающее данные этой формы у моего веб-приложения, должно разумно ожидать получения данных такого типа независимо от того, какой из типов MIME они используют в своих запросах, заголовок Accept. НО, как правило, будет достигнут некоторый консенсус относительно того, какой тип является каноническим типом для этих данных (т. Е. Один будет надлежащим образом зарегистрированным MIME-типом с IETF, а другие будут типами предварительной регистрации или предварительной стандартизации).

Таким образом, мой вопрос заключается в том, должен ли я, отвечая на эти запросы, установить для моего возвращенного заголовка Content-Type канонический тип или запрошенный тип? Какая практика лучше?

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

Это несколько субъективно, поэтому, если вы считаете, что это должна быть вики сообщества, а не вопрос, дайте мне знать, и я рассмотрю вопрос об изменении

1 Ответ

0 голосов
/ 24 августа 2009

Когда пользовательский агент (клиентское приложение) запрашивает ресурс, он отправляет несколько разных типов mime для этого запрошенного ресурса. Это происходит из соображений совместимости, чтобы веб-сервер знал, что пользовательский агент может принять. Задача сервера - определить, каким будет MIME-тип ресурса.

Не мешает принимать некоторые решения на стороне сервера при поиске подходящего ответа. Например, если вы хотите обслуживать все HTML-страницы как XML, но основной пользовательский агент не поддерживает необходимый тип mime, вы можете предоставить динамический ответ, используя вспомогательную технологию, такую ​​как PHP или ASP. В случае этого примера лучшей идеей было бы установить правильный тип mime в качестве канонического, и если пользовательский агент не поддерживает каноническое, тогда предоставьте им что-то еще, что они будут поддерживать, в противном случае каждый получит каноническое.

...