2012-01-18 11 views
9

Cuando un usuario hace clic en un enlace a un dibujo en mi sitio http://mysite.com/some-drawing, Me gustaría que mi servidor responda con código de estado 300 y dos ubicaciones de recursos: http://mysite.com/some-drawing.png y http://mysite.com/some-drawing.myapp, y haga que el navegador del cliente decida automáticamente cuál usar, basado en sus capacidades:¿Cuál es la estructura de respuesta exacta para el código de estado HTTP 300 (opciones múltiples)?

  • Si MiApl está instalado en la máquina del usuario, el navegador debe descargar la versión *.myapp y utilizar MiApl para mostrarlo.

  • Sin embargo, si MyApp no ​​está instalado y el navegador no puede mostrar esta versión, me gustaría que elija la versión *.png.

Sin embargo, estoy teniendo un tiempo difícil averiguar la estructura de una respuesta HTTP con código de estado 300.

El rfc2616 dice:

El recurso solicitado corresponde a uno cualquiera de un conjunto de representaciones , cada una con su propia ubicación específica, y agente- información de negociación accionada (sección 12) se proporciona para que el usuario (o agente de usuario) pueda seleccionar una representación preferida y redirecciona su solicitud a esa ubicación.

A menos que fuera una petición HEAD, la respuesta debe incluir una entidad que contiene una lista de características de los recursos y la ubicación (s) a partir de que el agente de usuario o el usuario puede elegir la más apropiada. El formato de entidad se especifica mediante el tipo de medio proporcionado en el campo de encabezado Tipo Content- . Según el formato y las capacidades de el agente de usuario, la selección de la opción más apropiada PUEDE ser realizada automáticamente. Sin embargo, esta especificación no define ningún estándar para dicha selección automática.

Si el servidor tiene una opción preferida de representación, DEBERÍA incluir el URI específico para esa representación en el campo Ubicación ; las agencias de usuario PUEDEN usar el valor del campo Ubicación para el redireccionamiento automático . Esta respuesta es cacheable a menos que se indique lo contrario.

La expresión "entidad que contiene una lista de las características del recurso y la ubicación (s)" parece ambigua. Qué significa eso? ¿Alguien sabe cómo se hace esto?

Respuesta

4

Eso no funcionará.

Las "opciones múltiples" se realizan enviando los enlaces en contenido de hipertexto (HTML) y dejan que el usuario elija.

+2

El rfc dice: "Dependiendo del formato y las capacidades del agente de usuario, la selección de la opción más apropiada PUEDE realizarse automáticamente ". ¿Está diciendo que todos los navegadores más importantes tratan todas las respuestas de estado 300 al mismo tiempo al pedir al usuario que elija manualmente? –

+1

Sí. ¿Conoce un formato que * permita * que el agente de usuario elija por usted? –

+1

Por ejemplo: una entidad tipo "multipart/alternative" metia. Esto es al menos lo que utilizan los clientes de correo electrónico para determinar la mejor opción para presentar al usuario. –

2

En teoría, si un cliente admitía la negociación dirigida por el servidor, podría enviar varios encabezados 'Aceptar' *, pero son bastante limitados (por ejemplo, Idioma, Codificación, Juego de caracteres) y podrían usarse para 'hacer ¿Quieres el documento PDF o MS Word? ' o '¿Te gustaría eso en español o en inglés?'), pero no para otras distinciones arbitrarias. No estoy al tanto de ningún navegador que lo soporte.En su lugar, hacen que el navegador envíe los encabezados Aceptar y el servidor responde con lo que crea que es mejor.

Ver:

actualización:

Véase también Mozilla Developer Network's "Content negotiation", que discute alguna ventaja y desventajas de server-drive vs. clie nt-driven negotiation, y algunos encabezados adicionales que pueden ser de interés (por ej., mirar para ver si el cliente envía 'Negotiate' para anunciar lo que admite)

Cuestiones relacionadas