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!
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!
Risposte:
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).
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.
302
codice di statoUna risposta con 302
è un modo comune per eseguire il reindirizzamento URL. Insieme al 302
codice di stato, la risposta dovrebbe includere Location
un'intestazione con un URI diverso. Tale intestazione verrà analizzata dall'agente utente e quindi eseguirà il reindirizzamento:
I browser web possono cambiare da POST
a GET
nella richiesta successiva. Se questo comportamento non è desiderato, è 307
possibile utilizzare il codice di stato (Reindirizzamento temporaneo).
Ecco come 302
viene definito il codice di stato nella RFC 7231 :
Il
302
codice 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
Location
campo di intestazione nella risposta contenente un riferimento URI per il diverso URI. L'agente utente PUO 'utilizzare ilLocation
valore 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
POST
aGET
per la richiesta successiva. Se questo comportamento non è desiderato, è307
possibile 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.
L' RFC 7231 definisce i seguenti codici di stato per il reindirizzamento:
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.
Location
intestazione è stata la cosa che mi ha aiutato). Si scopre che stavo chiamando un servizio con http
e si sono trasferiti a https
, tutto quello che ho ricevuto in risposta è stato che 302
non appena ho letto l' Location
intestazione qui, ho visto la http/https
differenza. Grazie!
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.
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:
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.
Secondo le definizioni del codice di stato http, un 302 indica un reindirizzamento (temporaneo). "La risorsa richiesta risiede temporaneamente sotto un URI diverso"
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).
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.
Il codice HTTP 302 è per il reindirizzamento, vedere http://en.wikipedia.org/wiki/HTTP_302 .
Indica alla navigazione che legge una pagina di andare da qualche altra parte e caricare un'altra pagina. Il suo utilizzo è molto comune.
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.
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:
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 .
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.
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;)).