Какова точная структура ответа для кода состояния HTTP 300 (множественный выбор)? - PullRequest
10 голосов
/ 18 января 2012

Когда пользователь нажимает ссылку на рисунок на моем сайте http://mysite.com/some-drawing, Я хотел бы, чтобы мой сервер ответил кодом состояния 300 и двумя расположениями ресурсов: http://mysite.com/some-drawing.png и http://mysite.com/some-drawing.myapp, и чтобы клиентский браузер автоматически определял, какой из них использовать, исходя из его возможностей:

  • Если на компьютере пользователя установлен MyApp, браузер должен загрузить версию *.myapp и использовать MyApp для ее отображения.

  • Однако, если MyApp не установлен и браузер не может отобразить эту версию, я бы хотел выбрать версию *.png.

Однако мне трудно разобраться в структуре ответа HTTP с кодом состояния 300.

rfc2616 говорит:

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

Если это не запрос HEAD, ответ ДОЛЖЕН включать объект содержащий список характеристик ресурса и местоположения который пользователь или пользовательский агент может выбрать наиболее подходящий. Формат объекта определяется типом носителя, указанным в Введите поле заголовка. В зависимости от формата и возможностей пользовательский агент, выбор наиболее подходящего варианта МОЖЕТ быть выполняется автоматически. Однако эта спецификация не определяет любой стандарт для такого автоматического выбора.

Если сервер имеет предпочтительный выбор представления, он ДОЛЖЕН включить конкретный URI для этого представления в Location поле; Пользовательские агенты МОГУТ использовать значение поля Location для автоматического Перенаправление. Этот ответ кэшируется, если не указано иное.

Формулировка « сущность, содержащая список характеристик и местоположений ресурса », выглядит неоднозначно Что это значит? Кто-нибудь знает, как это делается?

Ответы [ 2 ]

4 голосов
/ 18 января 2012

Это не сработает.

«Множественный выбор» осуществляется путем отправки ссылок в гипертекстовом (HTML) контенте и выбора пользователя .

3 голосов
/ 29 ноября 2013

Теоретически, если клиент поддерживает согласование на основе сервера, вы можете отправить обратно различные заголовки «Accept- *», но они довольно ограничены (например, Languauge, Encoding, Charset) и могут использоваться для «do you».хотите документ в формате PDF или MS Word?или «Вы хотели бы это на испанском или английском?»), но не для других произвольных различий.Я не знаю ни одного браузера, который бы его поддерживал.Вместо этого браузер отправляет заголовки Accept, а сервер отвечает тем, что считает лучшим.

См .:

обновление :

Также см. Mozilla Developer«Согласование содержимого» сети , в котором обсуждаются некоторые преимущества и недостатки согласования между сервером и согласованием на основе клиента, а также некоторые дополнительные заголовки, которые могут представлять интерес (например, проверка того, отправляет ли клиент «Согласование» для объявления).что он поддерживает)

...