2010-11-17 15 views
5

Ho un sito Web multi-locales. Devo reindirizzare gli utenti alle loro impostazioni internazionali quando accedono al sito senza il codice locale nell'URL.REST: il codice http 300 è appropriato in questa situazione di reindirizzamento?

ad es.

http://www.mysite.com automaticamente reindirizzato a uno o http://www.mysite.com/ukhttp://www.mysite.com/us

sto guardando rfc2616 e sto esitando a usare codice 300 (scelte multiple):

La risorsa richiesta corrisponde a una qualsiasi delle un set di rappresentazioni , ognuna con la propria posizione specifica e le informazioni di negoziazione guidate dall'agente (sezione 12) vengono fornite in modo che l'utente (o l'agente utente) possa selezionare un rappresentante preferito ion e reindirizzare la sua richiesta a quella posizione.

A meno che non si trattava di una richiesta HEAD, la risposta dovrebbe includere un soggetto contenente un elenco di caratteristiche di risorse e posizione (s) da cui l'agente utente o utente può scegliere la più appropriata. Il formato dell'entità è specificato dal tipo di supporto indicato nel campo dell'intestazione Content-Type.

A seconda del formato e delle capacità dell'agente utente, la selezione della scelta più appropriata può essere eseguita automaticamente. Tuttavia, questa specifica non definisce alcun standard per tale selezione automatica.

Se il server ha una scelta preferita di rappresentazione, DOVREBBE includere l'URI specifico per quella rappresentazione nel campo Ubicazione ;

Penso di aver capito, ma la dicitura lo rende ancora un po 'criptico per me. Qualcuno può familiarizzare con i codici di risposta confermare se sono sulla strada giusta e spiegare i seguenti estratti?

  • [...] e informazioni di negoziazione guidate dall'agente sono fornite [...]
  • A meno che non si trattasse di una richiesta HEAD, la risposta DOVREBBE includere un'entità contenente un elenco di caratteristiche delle risorse e ubicazione (s) [ ...]
  • risposta

    1

    Nel tuo caso non penso che tu voglia "negoziazione guidata dall'agente". Nel tuo caso, il tuo server dovrebbe essere in grado di selezionare la posizione di reindirizzamento dall'intestazione accept-lang. Penso che tu possa usare il redirect 303.

    La negoziazione guidata agente viene utilizzata solo quando il server non sa quale sia la rappresentazione desiderata dal client. In questi casi, il server restituirebbe un elenco di collegamenti con le diverse opzioni disponibili. L'agente selezionerebbe quindi la rappresentazione che desidera.

    Si utilizzerà la negoziazione basata su agente se si desidera un codice javascript per elaborare la risposta 300 e visualizzare un elenco di opzioni per l'utente in modo che l'utente possa selezionare la lingua desiderata.

    +0

    Davvero accept-lang è la risoluzione più debole possibile. Cosa fai con "en" qui? Ma hai perfettamente ragione che l'OP deve stare attento a come si aspetta che un 300 venga gestito dall'agente. – annakata

    +0

    Suppongo che l'unica opzione sia solo 303, poiché non ci sarà alcun reindirizzamento automatico in Chrome (almeno versione 19.0.1084.52 m) quando lo stato è 300. –

    0

    Credo che questa sia la risposta corretta, sì. In effetti penso che sia l'unica scelta se si vuole gestire questo come una risposta (e non si possono fare ricerche geografiche per esempio) poiché tutte le altre risposte dell'intervallo 3xx sono per risultati determinati (eccetto il proxy strano 305).

    Per quanto riguarda i brani:

    ... e agente-driven negoziazione informazioni vengono fornite ...

    L'intento è quello di esprimere che tra le scelte che vengono fatte sono scelte che si basano sulle caratteristiche dello user-agent (che potenzialmente sono infinitamente variabili) che sono tipicamente trasmesse nelle intestazioni accept e nell'intestazione user-agent stessa. La negoziazione è forse un termine un po 'confuso, ma il concetto a cui si riferisce è la determinazione tra l'agente e il server di quale tipo di risposta sia appropriata.

    A meno che non si trattava di una richiesta HEAD, la risposta dovrebbe includere un'entità contenente un elenco di risorse caratteristiche e la posizione (s) ...

    richieste HEAD sono progettati per tornare intestazioni di risposta solo (quindi puoi fare cose come controllare a basso costo gli aggiornamenti dei contenuti). Pertanto, in particolare, non desiderano un corpo di risposta, quindi non è necessario fornire l'elenco delle potenziali scelte che si otterrebbero per 300 a una richiesta GET o POST.

    Problemi correlati