Cosa significa esattamente HTTP / 1.1 302?


120

Qualche articolo che ho letto una volta diceva che significa saltare (da un URI a un altro), ma ho rilevato questo "302" anche quando in realtà non c'era proprio nessun salto!


1
Potrebbero esserci delle buone informazioni su questo qui nella documentazione di wc3.org .
Copas

2
Presta molta attenzione: example.com example.com ed example.com sono logicamente distinti e un sito che desidera essere accessibile tramite un singolo URL può reindirizzare l'uno all'altro per ottenere ciò. Ovviamente, i reindirizzamenti 302 sono una scelta sbagliata per questo ... ma potresti aver visto variazioni altrettanto sottili.
Shog9

Fare riferimento questo sito ( hostingpill.com/http-302-error )
virusarthak

Risposte:


74

Un reindirizzamento 302 significa che la pagina è stata temporaneamente spostata, mentre un 301 significa che è stata spostata in modo permanente.

I 301 sono buoni per il valore SEO, mentre i 302 non lo sono perché i 301 istruiscono i clienti a dimenticare il valore dell'URL originale, mentre i 302 mantengono il valore dell'originale e possono quindi potenzialmente ridurre il valore creando due URL logicamente distinti che ciascuno produce lo stesso contenuto (i motori di ricerca li vedono come duplicati distinti piuttosto che come un'unica risorsa con due nomi).


58

Questa domanda è stata posta molto tempo fa, mentre l'RFC 2616 era ancora in giro. Alcune risposte a questa domanda si basano su tale documento, che al giorno d'oggi non è più rilevante. Citando Mark Nottingham che, al momento in cui scrivo, co-presiede i gruppi di lavoro IETF HTTP e QUIC:

Non utilizzare RFC2616 . Eliminalo dai tuoi dischi rigidi, segnalibri e masterizza (o ricicla responsabilmente) tutte le copie stampate.

La vecchia RFC 2616 è stata soppiantata dai seguenti documenti che, insieme, definiscono il protocollo HTTP / 1.1:

Quindi mi propongo di fornire una risposta basata sulla RFC 7231 che è l'attuale riferimento per i codici di stato HTTP / 1.1.

Il 302codice di stato

Una risposta con 302è un modo comune per eseguire il reindirizzamento URL. Insieme al 302codice di stato, la risposta dovrebbe includere Locationun'intestazione con un URI diverso. Tale intestazione verrà analizzata dall'agente utente e quindi eseguirà il reindirizzamento:


Esempio di reindirizzamento


I browser web possono cambiare da POSTa GETnella richiesta successiva. Se questo comportamento non è desiderato, è 307possibile utilizzare il codice di stato (Reindirizzamento temporaneo).

Ecco come 302viene definito il codice di stato nella RFC 7231 :

6.4.3. 302 Found

Il 302codice di stato (Trovato) indica che la risorsa di destinazione risiede temporaneamente sotto un URI diverso. Poiché il reindirizzamento potrebbe essere modificato occasionalmente, il client dovrebbe continuare a utilizzare l'URI della richiesta effettiva per le richieste future.

Il server DOVREBBE generare un Locationcampo di intestazione nella risposta contenente un riferimento URI per il diverso URI. L'agente utente PUO 'utilizzare il Locationvalore del campo per il reindirizzamento automatico. Il payload della risposta del server di solito contiene una breve nota ipertestuale con un collegamento ipertestuale ai diversi URI.

Nota: per ragioni storiche, un agente utente PU cambiare il metodo di richiesta da POSTa GETper la richiesta successiva. Se questo comportamento non è desiderato, è 307possibile utilizzare il codice di stato (Reindirizzamento temporaneo).

Secondo i documenti web MDN di Mozilla , un tipico caso d'uso per 302è:

La pagina Web è temporaneamente non disponibile per motivi non imprevisti. In questo modo, i motori di ricerca non aggiornano i loro collegamenti.

Altri codici di stato per il reindirizzamento

L' RFC 7231 definisce i seguenti codici di stato per il reindirizzamento:

  • 301 (Trasferito)
  • 302 (Trovato)
  • 307 (Reindirizzamento temporaneo)

L' RFC 7238 è stato creato per definire un altro codice di stato per il reindirizzamento:

  • 308 (Reindirizzamento permanente)

Fare riferimento a questa risposta per ulteriori dettagli.


2
beh il mio dolore di due giorni è passato a te (l' Locationintestazione è stata la cosa che mi ha aiutato). Si scopre che stavo chiamando un servizio con httpe si sono trasferiti a https, tutto quello che ho ricevuto in risposta è stato che 302non appena ho letto l' Locationintestazione qui, ho visto la http/httpsdifferenza. Grazie!
Eugene

Ho lo stesso motivo per questo errore. Il mio Javascript puntava alla posizione https sbagliata e quindi il reindirizzamento non è riuscito. Grazie per il commento.
Max

25

Un modo semplice per esaminare i reindirizzamenti HTTP 301 e 302 è:

Supponi di avere un segnalibro su " http://sample.com/sample ". Utilizzi un browser per andare lì.

Un reindirizzamento 302 a un URL diverso a questo punto significherebbe che dovresti mantenere il tuo segnalibro su " http://sample.com/sample ". Questo perché l'URL di destinazione potrebbe cambiare in futuro.

Un reindirizzamento 301 a un URL diverso significherebbe che il tuo segnalibro dovrebbe cambiare per puntare al nuovo URL in quanto si tratta di un reindirizzamento permanente.


9

Da RFC 2616 (la specifica del protocollo di trasferimento ipertestuale) :

10.3.3 302 Found

   La risorsa richiesta risiede temporaneamente sotto un URI diverso.
   Poiché il reindirizzamento potrebbe essere alterato in alcune occasioni, il client DOVREBBE
   continuare a utilizzare l'URI della richiesta per richieste future. Questa risposta
   è memorizzabile nella cache solo se indicato da un'intestazione Cache-Control o Expires
   campo.

   L'URI temporaneo DOVREBBE essere fornito dal campo Posizione nel file
   risposta. A meno che il metodo di richiesta non fosse HEAD, l'entità di
   risposta DOVREBBE contenere una breve nota ipertestuale con un collegamento ipertestuale a
   i nuovi URI.

Fonte:

http://www.ietf.org/rfc/rfc2616.txt


6

Da Wikipedia :

Il codice di stato della risposta HTTP 302 Trovato è il modo più comune di eseguire un reindirizzamento. È un esempio di pratica industriale che contraddice lo standard.



5

302 è una risposta che indica il cambiamento della posizione della risorsa - "Trovato".

L'URL in cui dovrebbe essere ora posizionata la risorsa dovrebbe essere nell'intestazione "Posizione" della risposta.

Il "salto" dovrebbe essere eseguito dal client richiedente (fare una nuova richiesta all'URL della risorsa nel campo di intestazione della posizione della risposta).


5

In termini di SEO, 301 e 302 sono entrambi buoni a seconda della situazione,

Se solo una versione può essere restituita (cioè, gli altri reindirizzano ad essa), è fantastico! Questo comportamento è vantaggioso perché riduce il contenuto duplicato. Nel caso particolare di reindirizzamenti a URL barra finale, i nostri risultati di ricerca mostreranno probabilmente la versione dell'URL con il codice di risposta 200 (il più delle volte l'URL barra finale), indipendentemente dal fatto che il reindirizzamento fosse 301 o 302.



1

Secondo RFC 1945 / Hypertext Transfer Protocol - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.

0
  • Il codice 302 indica un reindirizzamento temporaneo .
  • Una delle caratteristiche più notevoli che lo differenziano da un reindirizzamento 301 è che, nel caso di reindirizzamenti 302, la forza del SEO non viene trasferita a un nuovo URL.
  • Questo perché questo reindirizzamento è stato progettato per essere utilizzato quando è necessario reindirizzare il contenuto a una pagina che non sarà quella definitiva. Pertanto, una volta eliminato il reindirizzamento, la pagina originale non avrà perso il suo posizionamento nel motore di ricerca di Google.

ESEMPIO: - Sebbene non sia molto comune che ci troviamo ad aver bisogno di un reindirizzamento 302, questa opzione può essere molto utile in alcuni casi. Questi sono i casi più frequenti:

  • Quando ci rendiamo conto che in una pagina sono presenti contenuti inappropriati. Mentre risolviamo il problema, possiamo reindirizzare l'utente a un'altra pagina che potrebbe essere di interesse.
  • Nel caso in cui un attacco al nostro sito Web richieda il ripristino di una qualsiasi delle pagine, questo reindirizzamento può aiutarci a ridurre al minimo l'incidenza.

Un reindirizzamento 302 è un codice che comunica ai visitatori di un URL specifico che la pagina è stata spostata temporaneamente, indirizzandoli direttamente alla nuova posizione.

  • In altre parole, il reindirizzamento 302 viene attivato quando i robot di Google o altri motori di ricerca richiedono di caricare una pagina specifica. In quel momento, grazie a questo reindirizzamento, il server restituisce una risposta automatica indicando un nuovo URL.

  • In questo modo si evitano errori e fastidi sia ai motori di ricerca che agli utenti, garantendo una navigazione fluida.

Per maggiori dettagli fare riferimento a questo articolo .


0

Un codice di stato 302 è un codice di stato della risposta HTTP che indica che la risorsa richiesta è stata temporaneamente spostata in un URI diverso. Poiché la posizione o l'attuale direttiva di reindirizzamento potrebbe essere modificata in futuro, un client che riceve un codice di risposta 302 Found dovrebbe continuare a utilizzare l'URI originale per richieste future.

Una risposta HTTP con questo codice di stato fornirà inoltre un URL nel campo di intestazione Posizione. Questo è un invito al programma utente (ad esempio un browser web) per fare una seconda richiesta, altrimenti identica, al nuovo URL specificato nel campo della posizione. Il risultato finale è un reindirizzamento al nuovo URL.


0

Per chiunque sia curioso del nome, aggiungo che probabilmente si chiama "Trovato" perché la risorsa principale (ad es. Una pagina web privata) che l'utente intende ricevere non è disponibile in quel momento (ad es. l'utente non ha ancora dimostrato la propria identità), così invece il server ha trovato una nuova risorsa che l'utente può ricevere (che è una pagina di login nel caso di utilizzo più comune).

Inoltre è "perdersi e ritrovarsi" nel modo a nascondino, il che significa che una risorsa persa con uno stato 302 viene persa solo temporaneamente , non dovrebbe essere persa per sempre (a meno che un giocatore non abbia cattive intenzioni;)).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.