2010-11-17 5 views
5

Tengo un sitio web multi-locales. Necesito redirigir a los usuarios a su configuración regional cuando acceden al sitio sin el código de configuración regional en la url.RESTO: ¿Es el código http 300 apropiado en esta situación de redirección?

p. Ej.

http://www.mysite.com redirigido a cualquiera http://www.mysite.com/uk o http://www.mysite.com/us

estoy mirando rfc2616 y estoy dudando en utilizar Código 300 (opciones múltiples):

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 un representante preferido ion y redireccionan 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 Content-Type.

Según el formato y las capacidades del agente de usuario, la selección de la opción más adecuada PUEDE realizarse 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 ;

Creo que entiendo, pero la redacción todavía lo hace un poco críptico para mí. ¿Puede alguien familiarizado con los códigos de respuesta confirmar si estoy en el camino correcto y explicar los siguientes extractos?

  • [...]
  • se proporciona información de negociación impulsada por agente. A menos que fuera una solicitud HEAD, la respuesta DEBERÍA incluir una entidad que contiene una lista de características de recursos y ubicación (es) [ ...]
  • Respuesta

    1

    En su caso, no creo que quiera una "negociación dirigida por un agente". En su caso, su servidor debería poder seleccionar la ubicación de redirección del encabezado accept-lang. Creo que puedes usar el redireccionamiento 303.

    La negociación dirigida por el agente solo se utiliza cuando el servidor no sabe cuál es la representación que desea el cliente. En esos casos, el servidor devolvería una lista de enlaces con las diferentes opciones disponibles. El agente seleccionaría la representación que desea.

    Utilizaría la negociación dirigida por el agente si deseara algún código de JavaScript para procesar la respuesta 300 y mostrar una lista de opciones para que el usuario pueda seleccionar el idioma deseado.

    +0

    Really accept-lang es la resolución más débil posible. ¿Qué haces con "en" aquí? Pero tiene razón en que el OP debe tener cuidado sobre cómo espera que el agente maneje un 300. – annakata

    +0

    Supongo que la única opción es realmente solo 303, ya que no habrá redirección automática en Chrome (al menos la versión 19.0.1084.52 m) cuando el estado es 300. –

    0

    Creo que esta es la respuesta correcta, sí. De hecho, creo que es la única opción si desea manejar esto como una respuesta (y no puede hacer búsquedas geográficas, por ejemplo), ya que todas las otras respuestas de rango 3xx son para resultados determinados (excepto el extraño proxy 305).

    En cuanto a los extractos:

    ... y el agente impulsado por la negociación se está proporcionando información ...

    La intención aquí es expresar que entre las opciones que se están adoptando elecciones que se basan en las características del usuario-agente (que son potencialmente infinitamente variables) que normalmente se transmiten en los encabezados de aceptación y el encabezado de usuario-agente. La negociación es quizás un término un poco confuso, pero el concepto al que se refiere es la determinación entre el agente y el servidor sobre qué tipo de respuesta es la adecuada.

    A no ser que se trataba de una petición HEAD, la respuesta debe incluir una entidad que contiene una lista de recursos características y la ubicación (s) ...

    peticiones HEAD están diseñados para devolver cabeceras de respuesta solamente (por lo que puede hacer cosas como verificar de forma económica las actualizaciones de contenido). Por lo tanto, específicamente no desean un cuerpo de respuesta, por lo que no es necesario que proporcione la lista de opciones potenciales que tendría para 300 a una solicitud GET o POST.

    Cuestiones relacionadas