Redirect 303 See Other

Che cos’è un redirect 303 See Other, il pattern Post/Redirect/Get che abilita, perché cambia la richiesta in GET o HEAD (a differenza di 307), come differisce da 302 e perché Google e Bing pubblicano pochissime indicazioni SEO specifiche per 303.

Prima pubblicazione: 2 lug 2026 · Ultimo aggiornamento: 22 ago 2026 · Advanced
Lingue

Un 303 See Other è un redirect HTTP temporaneo che indica al client di recuperare un URL diverso con una richiesta GET o HEAD, indipendentemente dal metodo della richiesta originale. È il meccanismo del pattern Post/Redirect/Get (PRG): si invia un modulo con POST, si riceve un 303 verso una pagina dei risultati accessibile tramite GET e, così, aggiornare la pagina non reinvia il POST originale. A differenza del 307, che conserva sempre il metodo, il 303 lo cambia in GET o HEAD; a differenza del 302, la gestione del metodo è inequivocabile. Per la SEO conta poco: è un pattern di applicazione web, non uno strumento di migrazione degli URL. Google lo documenta solo nel gruppo generico dei 3xx «temporanei» insieme a 302 e 307 e afferma che il redirect, da solo, non rende canonica la destinazione (anche se altri segnali possono comunque portare all’indicizzazione); né Google né Bing pubblicano indicazioni dedicate al 303. Normalmente non si usa per i redirect SEO e, se compare, viene trattato come un 302/307.

TL;DR — Un 303 (HTTP «303 See Other») è un redirect temporaneo il cui comportamento caratteristico è indirizzare il client a recuperare un’altra risorsa con GET o HEAD, qualunque fosse il metodo della richiesta originale. È ciò che abilita il pattern Post/Redirect/Get (PRG): POST303 → pagina dei risultati GET, così l’aggiornamento recupera la pagina invece di reinviare il modulo. A differenza del 307, che preserva sempre il metodo, il 303 lo cambia; rispetto al 302, la gestione del metodo è esplicita. È raro come redirect SEO tra pagine: è un meccanismo delle applicazioni web, non uno strumento di migrazione degli URL. Google documenta il 303 solo nel gruppo generico dei 3xx «temporanei» con 302 e 307, come segnale debole di canonicalizzazione, e non pubblica indicazioni specifiche; non ne risultano neppure di Bing. Non attribuire autorità che non esiste: qui c’è poco da dire.

Che cos’è davvero un 303

Un 303 è un codice di stato HTTP restituito negli header della risposta, prima di qualsiasi body, con un header Location che indica l’URL da recuperare. La semantica è stretta: la risposta alla richiesta si trova altrove e va recuperata con GET o HEAD.

Evidence for this claim RFC 9110 defines 303 See Other as directing the client to retrieve another resource identified by Location using GET or HEAD. Scope: HTTP semantics for 303 responses. Confidence: high · Verified: IETF: RFC 9110 §15.4.4 — 303 See Other

Il recupero con GET o HEAD è l’intero motivo per cui il 303 esiste come codice distinto e l’asse su cui differiscono i tre redirect quasi temporanei.

303, 302 e 307: la questione del metodo

Dal punto di vista SEO, tutti e tre sono redirect «temporanei» e Google li raggruppa come segnali deboli. Tecnicamente, però, rispondono in modo diverso alla domanda: quale metodo HTTP usa il client quando segue il redirect?

CodiceSignificatoMetodo della richiesta reindirizzata
302 FoundTemporaneoStoricamente ambiguo: molti client trasformavano POST in GET, ma la specifica non lo garantiva e il comportamento variava
303 See OtherSee Other (temporaneo)GET o HEAD: il metodo originale viene cambiato deliberatamente
307 Temporary RedirectTemporaneoSempre preservato: un POST resta POST e un PUT resta PUT

I codici 303 e 307 furono introdotti anche per disambiguare la confusione del 302. Se vuoi forzare il metodo a GET dopo l’invio di un modulo, usa un 303. Se devi mantenere il metodo originale (per esempio ripetere un POST verso un nuovo endpoint), usa un 307. Il 302 è il punto intermedio storico e poco definito.

Un’altra differenza pratica: per impostazione predefinita le risposte 303 non sono memorizzabili in cache, mentre un 301 lo è. È importante se temi che browser o CDN memorizzino in modo errato la destinazione del redirect; con un 303 questo rischio specifico non si presenta.

Il pattern Post/Redirect/Get, con precisione

PRG è l’uso canonico del 303 ed è un pattern di progettazione deliberato e corretto, non uno stato di errore:

  1. Il client invia un modulo come POST (crea un ordine, pubblica un commento o avvia un pagamento).
  2. Il server elabora l’effetto collaterale e restituisce 303 See Other con un header Location che punta a un URL dei risultati raggiungibile con GET (una ricevuta, una conferma o una vista aggiornata della risorsa).
  3. Il client segue con un GET (o HEAD) verso quell’URL. La cronologia e il pulsante per aggiornare il browser puntano ora a un recupero sicuro e idempotente: ricaricare o tornare indietro recupera la pagina dei risultati invece di ripetere il POST.

Il vantaggio è che un semplice refresh del browser non reinvia più il modulo e non mostra il dialogo «conferma reinvio modulo». Sii preciso: PRG impedisce quel percorso di ripetizione, non ogni scrittura duplicata, e non garantisce un’elaborazione eseguita una sola volta. Ritentativi, timeout, doppi clic e richieste concorrenti possono ancora inviare due volte il POST originale; operazioni che cambiano lo stato (ordini, pagamenti, commenti) richiedono controlli applicativi propri, come chiavi di idempotenza, confini transazionali e rilevamento delle richieste duplicate. Nelle API RESTful puoi vedere un 303 anche dopo un PUT o un DELETE, per portare il client alla rappresentazione della risorsa interessata.

Come tratta Google il 303 (e perché c’è così poco da trattare)

Il punto centrale, senza sovrainterpretare, è questo: Google non ha indicazioni SEO specifiche per il 303. Nella documentazione sui redirect compare come una riga della tabella dei redirect «temporanei», accanto a 302 e 307. Google dice che il crawler segue il redirect, ma la pipeline di indicizzazione non lo usa come segnale che la destinazione debba diventare canonica; altri segnali possono comunque portare Google a indicizzare la destinazione. È un’indicazione più limitata della canonicalizzazione forte offerta da un 301 permanente.

Evidence for this claim Google groups HTTP 303 with temporary redirects, follows it, and does not use it as a signal that the destination should become canonical. Scope: Google Search canonicalization behavior for server-side temporary redirects. Confidence: high · Verified: Google: Redirects and Google Search

Il testo informale di John Mueller sui redirect è ancora più chiaro. Dopo aver illustrato 301, 302 e 307, liquida il 303 in una breve parentesi: «E il 303? E il 304.5? Se hai preferenze forti per uno degli altri redirect, sentiti libero di usarlo». Aggiunge: «Dovremo stabilire sotto quale URL indicizzare il contenuto; se ti importa anche questo, usa ulteriori segnali di canonicalizzazione». Se usi un 303 e ti importa quale URL venga indicizzato, non affidarti al solo tipo di redirect: affiancalo a rel="canonical", link interni e sitemap.

La documentazione Google aggiunge una nota utile per tutti questi codici: “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect.” (traduzione) «Anche se Google tratta questi codici allo stesso modo, ricorda che sono semanticamente diversi: usa il codice appropriato per il redirect». Il fatto che la SEO li raggruppi non autorizza a usare un 303 per uno spostamento permanente: scegli il codice coerente con l’intento, così anche gli altri client si comportano correttamente.

Come tratta Bing il 303

In parole semplici: non ho trovato indicazioni pubbliche specifiche di Bing sul 303, oltre ai riferimenti generici ai codici HTTP nell’aiuto di Bing Webmaster Tools. Non c’è una dichiarazione verificata di Fabrice Canel o di altri esponenti Microsoft che citi il 303. È un dato legittimo («non abbiamo documentazione»), non una lacuna da colmare: non si può presumere che Bing replichi il comportamento dichiarato da Google. L’assenza di documentazione non dimostra che il trattamento sia identico; per una risposta definitiva su Bing, la questione resta aperta.

Il 303 conta per la SEO? Raramente.

Questa è la conclusione pratica, coerente con ciò che ho scritto pubblicamente. Un 303 non è uno strumento di migrazione delle pagine. In 11 tipi di redirect e il loro impatto SEO ho scritto: «Un redirect 303 porta l’utente a una risorsa simile a quella richiesta ed è una forma temporanea di redirect; serve soprattutto a evitare il reinvio dei moduli. Di norma non si usa per la SEO e, se compare, viene trattato come un 302/307».

Segnalo una tensione onesta nei miei contenuti precedenti. In Codici di stato HTTP e loro impatto SEO descrivevo il trattamento del 303 come «non definito… può essere trattato come 301 o 302, a seconda del funzionamento». Oggi lo formulerei più precisamente: la documentazione Google colloca il 303 nel gruppo temporaneo/debole con 302 e 307. Il termine «non definito» sembrava plausibile perché i 303 sono rari e Google non ha avuto motivo di chiarire i casi limite, non perché nascondano un comportamento più forte. Parti dal valore documentato (debole/temporaneo) e considera le sorprese conseguenza della rarità, non una regola segreta.

Quando può avere importanza? Soprattutto su siti con flussi intensivi di moduli o checkout e su applicazioni guidate da API, dove un crawl dei codici mostra 303. Anche lì, di solito, la risposta è «funziona come previsto: lascialo così». Se stai spostando deliberatamente un URL, non usare un 303: usa un 301 permanente o un 302 temporaneo; usa 308/307 quando devi preservare il metodo.

303 contro 201, 202 e 204: scegliere lo stato giusto per una scrittura

Il 303 non è l’unica opzione dopo una richiesta che modifica lo stato, ed è facile sceglierlo per abitudine. In un’API, a differenza di un flusso di moduli nel browser, spesso sono più adatti tre codici 2xx:

  • 201 Created — la richiesta ha creato una o più risorse in modo sincrono; la risposta dovrebbe identificare quella principale, nell’header Location se presente o nell’URI di destinazione. Usalo quando la creazione è conclusa e vuoi consegnare subito la nuova risorsa, senza un ulteriore GET.
  • 202 Accepted — la richiesta è stata accettata ma l’elaborazione non è ancora terminata (lavoro in coda o job asincroni). La risposta dovrebbe descrivere lo stato e, idealmente, indicare un monitor interrogabile dal client.
  • 204 No Content — l’azione è riuscita e non c’è altro da inviare: nessun body e nessun redirect; la risposta termina negli header.

Il 303 serve a uno scenario diverso: il client deve recuperare, dopo la scrittura, una risorsa risultato identificata separatamente, soprattutto nel pattern PRG del browser. Non sostituisce la creazione sincrona (201), l’accettazione asincrona (202) o un successo senza contenuto (204): ciascuno comunica un esito distinto che un redirect non può sostituire.

Miti comuni

  • «Un 303 significa che la pagina è stata spostata o si è rotta». No: è una risposta deliberata che cambia il metodo, di solito dopo POST/PUT/DELETE, non un segnale di contenuto trasferito o di errore.
  • «Un 303 trasferisce il valore SEO di un 301». No: è temporaneo/debole, nello stesso gruppo di 302 e 307 secondo Google.
  • «Gli esperti SEO dovrebbero usare 303 come redirect generico». Non è progettato per questo: è uno schema ristretto per moduli e API, non per migrazioni ordinarie.
  • «Google ha regole dettagliate e specifiche per il 303». No: esiste solo una menzione raggruppata e la frase di Mueller «sentiti libero di usarli».
  • «302 e 303 sono tecnicamente identici». Sono accomunati nella SEO, ma non tecnicamente: il 303 forza il recupero successivo con GET o HEAD, mentre la gestione del metodo nel 302 è stata storicamente incoerente; proprio per questo sono stati introdotti 303 e 307.

Dove si colloca

Il 303 appartiene al gruppo dei redirect temporanei. I parenti più vicini sono il 302, redirect temporaneo flessibile con cui viene spesso raggruppato, e il 307, che preserva il metodo mentre il 303 passa a GET o HEAD. È diverso dal 301, redirect permanente che consolida i segnali di ranking e svolge il lavoro di migrazione per cui il 303 non è stato progettato. Per la famiglia completa — 301/308 permanenti, 302/303/307 temporanei, 404/410 per risorse scomparse e errori 5xx — consulta il gruppo dei codici di stato HTTP.

Convalidare in sicurezza un flusso 303

Prima di fidarti di un 303 in produzione, controllalo senza seguirlo automaticamente alla cieca: esamina il valore di Location (assoluto, relativo e risolvibile), cerca loop o catene inutili, verifica che la richiesta successiva usi GET o HEAD e controlla stato e contenuto della risposta finale. In un flusso di moduli o API, esamina anche i log dell’applicazione per assicurarti che la scrittura originale non venga ripetuta.

Una cautela: non trasformare il comportamento di un singolo client in una regola universale. Browser, client HTTP e framework variano per prodotto, versione e configurazione; un report su una versione specifica non è prova per tutti. Un checker a livello URL può confermare redirect e destinazione, ma non può verificare al posto tuo idempotenza, gestione delle credenziali o sicurezza cross-origin: serve testare il flusso reale di invio.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.