Cos'è il codice di stato 300 Multiple Choices?
Questo tutorial riguarda i seguenti argomenti:
Conosciamo tutti i codici di stato della risposta HTTP 301 “reindirizzamento permanente” e 302 “reindirizzamento temporaneo”, ma hai mai sentito parlare del codice di stato 300? Non preoccuparti se non l’hai fatto, non sei l’unico. Non è comune come altri codici di stato della risposta HTTP 3XX .
Il codice di stato 300 ha caratteristiche uniche che lo rendono utile in alcuni casi specifici.
In questa guida, esploreremo il codice di stato 300, le sue applicazioni e i problemi più comuni a esso associati.
Come funziona il codice di stato 300?
Ecco come appare una tipica interazione client-server che coinvolge un codice di risposta 300:
- Un client richiede una risorsa – un client (browser, applicazione) invia una richiesta HTTP (GET, POST, ecc.) a un server web per una specifica risorsa.
- Il server web elabora la richiesta: il server web riceve la richiesta e determina che la risorsa ha più versioni. Queste potrebbero essere pagine in diverse lingue, formati (XML, JSON, ecc.) o posizioni.
- Il server web risponde con il codice di risposta HTTP 300 “Multiple Choices”: il server web invia il codice di risposta 300 al client. Questa risposta contiene un elenco di opzioni disponibili tra cui scegliere.
L’elenco può essere presentato nel corpo della richiesta o nell’intestazione “Location“. - Il client fa una scelta e rinvia una nuova richiesta: il client deve scegliere una delle opzioni presentate e inviare un’altra richiesta HTTP informando il server della propria scelta.
In alternativa, l’applicazione client può essere configurata per effettuare una selezione automatica in base a dei criteri predefiniti. - Il server web elabora la richiesta successiva: il server web elabora la nuova richiesta. Risponde con la risorsa corrispondente alla scelta fatta dal client. In caso di risultato positivo, la nuova risposta sarà 200 “OK”.
A seconda del sito web a cui viene inviata la richiesta HTTP, queste scelte sono presentate come URI, Alternate o Link HTTP headers (il metodo più utilizzato).
Se una delle opzioni viene scelta, il server web dovrebbe generare un header HTTP Location specificando l’URI della versione della risorsa preferita.
A meno che il metodo di richiesta HTTP non sia HEAD, come una richiesta POST o GET, il codice di risposta 300 ha un messaggio contenente un elenco delle scelte disponibili.
Di seguito è riportato un esempio di tale risposta.
HTTP/1.1 300 Multiple Choices
Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<title>300 Multiple Choices</title>
</head>
<body>
<h1>Scelte multiple</h1>
<p>La risorsa richiesta ha rappresentazioni multiple. Seleziona una delle seguenti opzioni:</p>
<ul>
<li><a href="http://esempio.com/risorsa/en">Inglese</a></li>
<li><a href="http://esempio.com/risorsa/fr">Francese</a></li>
<li><a href="http://esempio.com/risorsa/es">Spagnolo</a></li>
</ul>
</body>
</html>
Il codice di risposta 300 è memorizzabile nella cache. Ciò significa che i client (browser o user-agent) possono salvare la risposta e caricarla dal loro spazio di archiviazione per eventuali richieste future, migliorandone le prestazioni. Il server web controlla la data per Last-modified nei campi d’intestazione della richiesta inviati dal client che ha memorizzato la risorsa nella cache e, se corrisponde all’ultima versione della risorsa, restituisce un codice di risposta 304 “Not modified”.
In generale, il codice di stato 300 non è ampiamente utilizzato poiché non esiste un modo standardizzato di presentare le scelte.
Caratteristiche chiave del codice 300 Multiple Choices
Il codice di risposta 300 ha diverse caratteristiche importanti che lo distinguono da altri codici di stato HTTP.
Opzioni multiple
Il server presenta diverse opzioni tra cui il client può scegliere. Il modo in cui queste opzioni sono presentate dipende dal server o dal sito web.
Potrebbe essere un elenco puntato o numerato nel corpo della risposta 300 o un elenco nell’intestazione “Location”.
Nessun reindirizzamento automatico
A differenza di altri codici 3xx, 300 non reindirizza automaticamente l’utente a una posizione specifica. Invece, il visitatore deve scegliere la posizione della risorsa desiderata.
Il server web non consegnerà i contenuti fino a quando il client non farà una scelta esplicita. Che si tratti di una selezione manuale o automatica fatta da un’applicazione dipende interamente dal client.
Richiesta un’interazione dell’utente
Con il codice di risposta HTTP 300, il server di origine richiede all’utente (user agent) di selezionare una delle scelte disponibili.
Il server non può procedere finché una delle opzioni non è selezionata.
Quando viene utilizzato 300 Multiple Choices?
Sebbene sia usato raramente, il codice di stato 300 possiede caratteristiche distinte che lo rendono utile in casi specifici. Ecco i più comuni.
Scegliere tra più formati
Quando una risorsa è disponibile in più formati (ad esempio, diverse lingue e tipi di media), il server di origine consente agli utenti di scegliere le loro preferenze utilizzando un codice di risposta 300.
Ad esempio, per lo stesso video puoi elencare diversi formati opzionali (MPEG, MP4, ecc.) tra cui i client possono scegliere.
Selezionare le versioni delle risorse
Se una risorsa ha più versioni, come le versioni delle API, il codice di stato 300 indica le opzioni disponibili per gli utenti.
Ad esempio, un server potrebbe offrire un documento in diverse lingue o formati, come HTML, PDF o testo normale. Il client può quindi selezionare la versione desiderata in base alle preferenze o alle capacità dell’utente. Questo meccanismo consente una consegna del contenuto più flessibile, assicurando che il client riceva la risorsa più appropriata senza fare più richieste consecutive.
Risorse alternative
Quando una risorsa ha più posizioni o rappresentazioni alternative, il server può fornire queste scelte al client.
Diciamo che potresti voler visualizzare contenuti diversi per diverse regioni. Prima che procedano sul tuo sito web, puoi richiedere ai visitatori di selezionare la loro regione da un menu con un codice di risposta 300.
Suggerimenti per la gestione di un codice di stato 300
Il codice di risposta 300 non è così popolare come altri tipi di reindirizzamento, quindi gli utenti non vi hanno molta familiarità. Pertanto, dovresti essere molto attento e diligente quando lo utilizzi, per assicurarti che il codice di stato HTTP 300 non li confonda. Di seguito, troverai alcuni suggerimenti utili per gestire un codice di risposta 300 “multiple choices”.
- Mantieni una documentazione chiara – Documenta le diverse scelte disponibili e i criteri per ognuna. Questo aiuterà sia gli sviluppatori che gli utenti a capire meglio le opzioni disponibili quando incontrano il codice HTTP 300.
- Mantieni la coerenza nei nomi – Utilizza una denominazione coerente per le diverse versioni delle risorse. Questo aiuterà gli utenti a essere sicuri di cosa stanno scegliendo.
- Gestione lato client – Devi garantire che le applicazioni client, come browser o app mobili, possano gestire correttamente le risposte 300.
- Aggiornamenti Regolari – Mantieni aggiornato l’elenco delle opzioni disponibili. Se una rappresentazione o una versione di una risorsa diventa obsoleta, rimuovila dalle opzioni per evitare link interrotti.
- Fornisci istruzioni chiare – Facilita un’interfaccia intuitiva e user-friendly per il tuo sito web o applicazione web. Includi un testo descrittivo e istruzioni chiare per ogni scelta. In questo modo, i tuoi visitatori avranno una chiara comprensione delle scelte presentate ed eviterai che diventino frustrati. Inoltre, istruzioni chiare aiuteranno i motori di ricerca a eseguire correttamente la scansione del tuo sito.
- Fai dei test cross-device/browser – La compatibilità multi-dispositivo/piattaforma è essenziale al giorno d’oggi. Testa regolarmente il tuo sito web o l’applicazione su diversi dispositivi o browser per assicurarti che possano gestire correttamente le scelte fornite nel codice di risposta 300.
- Monitora utilizzo – Tieni traccia della frequenza con cui ciascuna opzione viene selezionata. È possibile utilizzare queste informazioni per impostare una posizione predefinita delle risorse che soddisfi le preferenze degli utenti. È possibile utilizzare vari strumenti per monitorare quali pagine generano più traffico. Molti provider di hosting offrono strumenti interni di analisi del traffico che suddividono il traffico in base alle pagine visualizzate. Gli utenti di SiteGround possono monitorare il proprio traffico da Site Tools > Statistiche > Traffico.
Se il tuo hosting non fornisce tali strumenti, puoi optare per servizi di monitoraggio di terze parti (come Google Analytics o Ahrefs) o plugin (per WordPress, Joomla, ecc.).
Problemi comuni
Proprio come qualsiasi altro tipo di reindirizzamento, il codice di stato 300 può non funzionare a dovere se non utilizzato correttamente. Può far sì che un sito web produca una risposta non valida visualizzando un codice di errore o una pagina vuota. Ecco alcune delle cause di un codice di risposta 300 problematico.
Opzioni mal configurate
Impostare erroneamente le scelte disponibili presentate da un codice HTTP 300 può confondere gli utenti e portare a errori. Tali errori di configurazione potrebbero essere:
- Link non funzionanti – gli URL incompleti non apriranno la pagina designata e confonderanno i visitatori, portando a un’esperienza utente peggiore.
- Content-Type non corretto – content-Type è un header di rappresentazione progettato per informare i clienti del tipo di media della risorsa richiesta. Se l’intestazione Content-Type non corrisponde al tipo effettivo di una risorsa, la successiva richiesta del client potrebbe non eseguire correttamente la risorsa di destinazione.
- Nessun meccanismo di fallback – il codice di risposta 300 non include un’opzione predefinita o un meccanismo di fallback nel caso in cui l’utente non possa fare una scelta o se il client non supporta i codici di risposta 300.
Denominazione incoerente delle scelte
I link che non seguono una convenzione di denominazione coerente rendono le scelte poco chiare. Ad esempio, un link può essere chiamato “resource/en” in un posto e “resource /english” in un altro.
Di conseguenza, è più probabile che i visitatori lascino il tuo sito web piuttosto che seguire le scelte.
Guida utente non chiara
Descrizioni o istruzioni poco chiare possono confondere i client sulle scelte date. Inoltre, possono impedire ai motori di ricerca di eseguire correttamente la scansione del tuo sito web. Pertanto, l’esperienza dell’utente e il punteggio SEO potrebbero risentirne.
Incompatibilità dei browser
Alcuni browser potrebbero non gestire correttamente 300 risposte, portando a funzionalità interrotte del sito web o dell’applicazione con cui stanno comunicando. Ad esempio, tali incompatibilità possono sorgere quando l’entità della richiesta contiene un campo di intestazione Expect request, che specifica la risposta attesa dal client.
Se il codice di stato 300 non è una risposta richiesta, il client potrebbe non essere in grado di elaborarlo correttamente.
Come risolvere i problemi di codice HTTP 300 non configurato correttamente?
Esamina la configurazione del server
Assicurati che il tuo server web specifichi correttamente le scelte multiple presentate nel codice di risposta 300. Ogni opzione deve essere un URL valido che punta a una versione diversa della risorsa di destinazione.
Convalida le intestazioni del codice di risposta 300
Esamina i campi dell’intestazione della risposta HTTP, come l’intestazione Location. Deve contenere gli URL corretti per le scelte disponibili. Intestazioni errate possono portare a link interrotti e frustrazione per l’utente.
Ispeziona i log degli errori
Abilita la registrazione degli errori per il tuo sito web per ispezionare i problemi registrati mentre i visitatori accedono al tuo sito web. Questi log possono aiutarti a individuare l’origine di molti errori lato client (come il framing dei messaggi di richiesta non valido, troppe richieste, ecc.) o errori lato server (come risorse del server insufficienti, restrizioni di accesso, ecc.).
Questi registri possono anche aiutarti a identificare i problemi relativi al codice di risposta 300. Gli utenti di SiteGround possono trovare facilmente i dettagliati log degli errori nel panello Site Tools > Statistiche > Registro errori.
Implementa il meccanismo di fallback
Se i client non sono in grado di gestire il codice di stato 300, implementa un meccanismo di fallback che reindirizza a una scelta predefinita. Questo assicura che gli utenti possano ancora accedere alla risorsa anche se non effettuano una selezione.
Conclusione
Il codice di stato 300 è una risposta del server che richiede ai client di selezionare tra più opzioni per procedere. Questo può essere molto utile, specialmente quando hai diverse versioni di una risorsa (pagina, formati di file) tra cui i clienti possono scegliere.
Tuttavia, ha anche alcune limitazioni, che lo rendono inadatto in alcuni scenari. Se decidi di incorporarlo nel tuo sito web o applicazione, dovresti considerare i suoi pro e contro. Ci auguriamo che prenderai una decisione informata dopo aver letto questo articolo.