Cosa significa esattamente HTTP / 1.1 302?

Alcuni articoli che ho letto una volta hanno detto che significa saltare (da un URI a un altro), ma ho rilevato questo “302” anche quando in realtà non c’era alcun salto!

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

301 sono buoni per il valore SEO, mentre 302 non lo sono perché 301s istruiscono i clienti a dimenticare il valore dell’URL originale, mentre il 302 mantiene il valore dell’originale e può quindi potenzialmente ridurre il valore creando due URL logicamente distinti che ognuno produce lo stesso contenuto (i motori di ricerca li vedono come duplicati distinti piuttosto che una singola risorsa con due nomi).

Da giugno 2014 la RFC 2616 è obsoleta e non deve più essere utilizzata come riferimento . RFC 7231 è il riferimento corrente per la semantica e il contenuto del protocollo HTTP / 1.1.

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

Esempio di reindirizzamento

I browser Web possono passare da POST a GET nella richiesta successiva. Se questo comportamento non è desiderato, è ansible utilizzare il codice di stato 307 (temporaneo reindirizzamento).

Questo è il modo in cui il codice di stato 302 è definito nell’RFC 7231 :

6.4.3. 302 trovati

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

Il server DOVREBBE generare un campo di intestazione di Location nella risposta contenente un riferimento URI per il diverso URI. L’agente utente PU MAY utilizzare il valore del campo Location 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 MAY cambiare il metodo di richiesta da POST a GET per la richiesta successiva. Se questo comportamento non è desiderato, è ansible utilizzare il codice di stato 307 (temporaneo reindirizzamento).

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

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

Altri codici di stato per il reindirizzamento

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

  • 301 (spostato in modo permanente)
  • 302 (trovato)
  • 307 (reindirizzamento temporaneo)

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.

Un modo semplice di guardare i reindirizzamenti HTTP 301 e 302 è:

Supponi di avere un segnalibro per ” http://sample.com/sample “. Si utilizza 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 è un reindirizzamento permanente.

Da RFC 2616 (Hypertext Transfer Protocol Specification) :

 10.3.3 302 trovati

    La risorsa richiesta risiede temporaneamente in un URI diverso.
    Poiché il reindirizzamento potrebbe essere modificato occasionalmente, il cliente DOVREBBE
    continuare a utilizzare l'URI di richiesta per le richieste future.  Questa risposta
    è memorizzabile nella cache solo se indicato da un'intestazione Cache-Control o Expires
    campo.

    L'URI temporaneo DOVREBBE essere dato dal campo Posizione nel
    risposta.  A meno che il metodo di richiesta fosse HEAD, l' quadro di
    risposta DOVREBBE contenere una breve nota ipertestuale con un collegamento ipertestuale a
    il nuovo URI (s).

Fonte:

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

Secondo le definizioni del codice di stato http, 302 indica un reindirizzamento (temporaneo). “La risorsa richiesta risiede temporaneamente sotto un URI differente”

Nel termine di SEO, 301 e 302 entrambi sono buoni, dipende dalla situazione,

Se è ansible restituire solo una versione (ad esempio, l’altra reindirizza ad essa), è fantastico! Questo comportamento è utile perché riduce il contenuto duplicato. Nel caso particolare dei reindirizzamenti agli URL di 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 della barra finale), indipendentemente dal fatto che il reindirizzamento sia un 301 o 302.

Da Wikipedia :

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

302 è una risposta che indica il cambiamento di posizione della risorsa – “Trovato”.

L’url dove dovrebbe essere ora localizzata la risorsa dovrebbe trovarsi nell’intestazione “Location” della risposta.

Il “salto” deve essere eseguito dal client richiedente (effettuare una nuova richiesta all’url della risorsa nel campo dell’intestazione Location della risposta).

Il codice HTTP 302 è per il reindirizzamento vedi http://en.wikipedia.org/wiki/HTTP_302 .

Indica al browser di leggere una pagina per 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.