Un messaggio 302 trovato è un HTTP response status code
che indica che la risorsa richiesta è stata temporaneamente spostata in un altro URI
. Poiché la posizione o la direttiva di reindirizzamento corrente potrebbero essere modificate in futuro, un client che riceve un codice di risposta 302 Found
dovrebbe continuare a utilizzare l’URI originale per le richieste future.,
Sfortunatamente, può essere difficile distinguere tra tutti i possibili codici di risposta HTTP e determinare la causa esatta di errori come il codice302 Found
. Esistono decine di possibili codici di stato HTTP utilizzati per rappresentare la complessa relazione tra il client, un’applicazione Web, un server Web e la moltitudine di servizi Web di terze parti che potrebbero essere in uso, quindi determinare la causa di un particolare codice di stato può essere difficile., In questo articolo esamineremo il codice302 Found
esaminando alcuni suggerimenti per la risoluzione dei problemi, insieme ad alcune potenziali correzioni per problemi comuni che potrebbero causare questo problema all’interno delle proprie applicazioni Web, quindi andiamo ad esso!
Il problema è Server-Side
Tutti i codici di stato della risposta HTTP che si trovano nella categoria3xx
sono consideratiredirection messages
. Tali codici indicano all’agente utente (cioè al browser web) che è necessaria un’azione aggiuntiva per completare la richiesta e accedere alla risorsa desiderata., A differenza di client error responses
trovato nel 4xx
codici, come il 404 Not Found Error
abbiamo esplorato recentemente, che potrebbe derivare da un client o un problema lato server, 302 Found
codice indica in genere un problema sull’attuale server web che ospita l’applicazione.
Detto questo, l’aspetto di un302 Found
di solito non è qualcosa che richiede molto intervento da parte dell’utente. Tutti i browser moderni rileveranno automaticamente il codice di risposta302 Found
ed elaboreranno automaticamente l’azione di reindirizzamento temporaneo., Il server Web che ospita l’applicazione includerà in genere un’intestazione Location
speciale come parte della risposta che invia al client. Questa intestazioneLocation
indica il nuovo URL in cui è possibile trovare la risorsa richiesta. Ad esempio, se arriva una richiesta per accedere all’URL , ma il server Web è configurato per forzare il reindirizzamento a una versione sicura utilizzando
https
, la risposta del server includerà l’intestazione Location: https://airbrake.io
., Questo indica al browser che dovrebbe reindirizzare questa singola richiesta a all’URL protetto di
. Nella maggior parte dei casi, il browser rileverà automaticamente questo codice di risposta
302 Found
, leggerà il nuovo URL Location
e reindirizzerà la richiesta a quella nuova posizione.
Tuttavia, è importante tenere presente che il302 Found
codice di risposta viene utilizzato per scopi completamente diversi rispetto al301 Moved Permanently
abbiamo esaminato la scorsa settimana., Nel caso del primo, il reindirizzamento dovrebbe essere temporaneo (cioè solo per la richiesta corrente e singola) — il browser dovrebbe “ricordare” l’URI originale ed elaborare eventuali richieste future utilizzando lo stesso URI. Tuttavia, con un codice 301 Moved Permanently
al browser viene detto che l’URI originale non è più valido, quindi tutte le richieste future dovrebbero utilizzare il nuovo URI fornito dall’intestazione Location
.,
Poiché il 302 Found
indica che qualcosa è andato storto all’interno del server
della tua applicazione, possiamo in gran parte ignorare il lato client
delle cose. Se stai cercando di diagnosticare un problema con la tua applicazione, puoi ignorare immediatamente la maggior parte del codice e dei componenti lato client, come HTML, CSS (cascading Style Sheets), JavaScript lato client e così via. Questo non si applica esclusivamente ai siti web, sia., Molte applicazioni smart phone che hanno un’interfaccia utente dall’aspetto moderno sono in realtà alimentati da una normale applicazione web dietro le quinte; uno che è semplicemente nascosto all’utente. Se si utilizza tale applicazione e si verifica un 302 Found
, il problema non sarà correlato all’app installata sul telefono o sul dispositivo di test locale. Invece, sarà qualcosa sul lato server, che sta eseguendo la maggior parte della logica e dell’elaborazione dietro le quinte, al di fuori della competenza dell’interfaccia locale presentata all’utente.,
Se l’applicazione genera codici di risposta 302 Found
imprevisti, è possibile eseguire una serie di passaggi per diagnosticare il problema.
Inizia con un backup completo dell’applicazione
Come con qualsiasi cosa, è meglio averlo giocato sul sicuro all’inizio piuttosto che rovinare qualcosa e venire a pentirsene più tardi lungo la strada. Pertanto, è fondamentale eseguire un backup completo dell’applicazione, del database e così via, prima di tentare qualsiasi correzione o modifica al sistema., Ancora meglio, se ne hai la possibilità, crea una copia completa dell’applicazione su un server secondario staging
che non è “live” o non è altrimenti attivo e disponibile al pubblico. Questo ti darà un terreno di prova pulito con cui testare tutte le potenziali correzioni per risolvere il problema, senza minacciare la sicurezza o la santità della tua applicazione live.
Diagnosi di un codice di risposta trovato 302
A302 Found
il codice di risposta indica che la risorsa richiesta deve essere temporaneamente accessibile in un URI diverso., Tuttavia, è del tutto possibile che il server sia configurato in modo errato, causando una risposta impropria con 302 Found
codici, invece del codice standard e atteso 200 OK
di una normale richiesta funzionale. Pertanto, gran parte della diagnosi del problema passerà attraverso il processo di doppio controllo di quali risorse/URL stanno generando 302 Found
codici di risposta e determinare se questi codici sono appropriati o meno.,
Se la tua applicazione risponde con 302 Found
codici che non dovrebbe emettere, questo è un problema che potrebbero verificarsi anche molti altri visitatori, ostacolando drasticamente la capacità della tua applicazione di servire gli utenti. Esamineremo alcuni suggerimenti e trucchi per risolvere il problema. Se nulla qui funziona, non dimenticare che Google è tuo amico. Prova a cercare termini specifici relativi al problema, ad esempio il nome del software CMS o del server Web dell’applicazione, insieme a 302 Found
., È probabile che troverai altri che hanno riscontrato questo problema e hanno trovato una soluzione.
Risoluzione dei problemi sul Server-Side
Ecco alcuni consigli per aiutarvi a risolvere quello che potrebbe essere la causa del 302 Found
per apparire sul lato server di cose:
Confermare la Configurazione del Server
l’applicazione è probabile che in esecuzione su un server che utilizza uno dei due server web più diffuso software, Apache
o nginx
., Al momento della pubblicazione, entrambi questi server web costituiscono over 84%
del software web server del mondo! Pertanto, uno dei primi passi che puoi compiere per determinare cosa potrebbe causare questi codici di risposta 302 Found
è controllare i file di configurazione per il software del tuo server Web per istruzioni di reindirizzamento involontarie.
Per determinare quale server Web sta utilizzando l’applicazione, è necessario cercare un file chiave. Se il tuo server web è Apache, cerca un file.htaccess
all’interno della directory principale del file system del tuo sito web., Ad esempio, se la tua applicazione si trova su un host condiviso, probabilmente avrai un nome utente associato all’account di hosting. In tal caso, la directory radice dell’applicazione si trova in genere nel percorso di /home/<username>/public_html/
, quindi il file .htaccess
si trova in /home/<username>/public_html/.htaccess
.
Se si trova il file .htaccess
, aprirlo in un editor di testo e cercare le linee che utilizzano le direttive RewriteXXX
, che fanno parte del modulo mod_rewrite
in Apache., Coprire esattamente come funzionano queste regole è ben oltre lo scopo di questo articolo, tuttavia, il concetto di base è che una direttiva RewriteCond
definisce un modello basato su testo che verrà abbinato agli URL inseriti. Se un URL corrispondente viene richiesto da un visitatore del sito ,la direttivaRewriteRule
che segue una o più direttiveRewriteCond
viene utilizzata per eseguire il reindirizzamento effettivo della richiesta all’URL appropriato.,
Per esempio, qui è un semplice RewriteCond
e RewriteRule
combinazione che soddisfa tutte le richieste in arrivo per example.com
e stabilisce temporaneamente il reindirizzamento alla stessa URI su temporary-example.com
dominio invece:
RewriteEngine onRewriteCond %{HTTP_HOST} ^example\.com$RewriteRule ^(.*)$ http://www.temporary-example.com/$1
si Noti la extra bandiera alla fine del RewriteRule
, in cui si afferma esplicitamente che il codice di risposta dovrebbe essere 302
indica user agent (browser) che si tratta di un temporary redirect., Quindi, se trovate qualche strano RewriteCond
o RewriteRule
istruzioni .htaccess
file che non sembrano appartenere, temporaneamente commentando loro (utilizzando il #
carattere prefisso) e riavviare il server web per vedere se questo risolve il problema.
D’altra parte, se il tuo server è in esecuzione su nginx
, dovrai cercare un file di configurazione completamente diverso., Per impostazione predefinita questo file si chiamanginx.conf
e si trova in una delle poche directory comuni:/usr/local/nginx/conf
,/etc/nginx
, o/usr/local/etc/nginx
. Una volta individuato, apri nginx.conf
in un editor di testo e cerca le direttive rewrite
che utilizzano il flag redirect
. Ad esempio, ecco un semplice block directive
(cioè, un insieme di direttive) che consente di configurare un virtual server, creando un redirect temporaneo da example.com
per il temporary-example.com
:
server { listen 80; listen 443 ssl; server_name www.example.com; rewrite ^/$ http://www.temporary-example.com redirect;}
Rewrite
direttive nginx
sono simili per il RewriteCond
e RewriteRule
direttive trovato nel Apache
in quanto tendono a contenere più complessi del testo-base di modelli per la ricerca., In entrambi i casi, esaminare il filenginx.conf
per eventuali direttive anomalerewrite
che includono il flagredirect
(il flag alternativopermanent
emetterà301
codici di risposta invece). Commentare eventuali anomalie prima di riavviare il server per verificare se il problema è stato risolto.
Verificare la presenza di Software obsoleto
Nel documento delle specifiche RFC per HTTP 1.,0 ha dichiarato che lo scopo di un codice di risposta 302 Found
era indicare che il client doveva eseguire un reindirizzamento temporaneo. Tuttavia, molti browser più recenti elaborerebbero un302
codice ricevuto tramite unaPOST
richiesta come unaGET
richiesta errata, che ha causato problemi e confusione per alcuni software di server Web che cercano di ottenere i browser per eseguire l’attività corretta quando era richiesto il reindirizzamento temporaneo. Per risolvere questo il HTTP 1.,1 Il documento delle specifiche RFC ha aggiunto i codici di risposta303 See Other
e307 Temporary Redirect
, che sono mezzi espliciti per gestire rispettivamentePOST-to-GET
e le risposte dirette temporanee.
Setacciare i log
Quasi ogni applicazione web manterrà una qualche forma di log lato server. Application logs
sono in genere la cronologia di ciò che l’applicazione ha fatto, ad esempio quali pagine sono state richieste, a quali server si è connessa, quali risultati del database fornisce e così via., Server logs
sono correlati all’hardware effettivo che esegue l’applicazione e spesso forniscono dettagli sullo stato e lo stato di tutti i servizi connessi, o anche solo il server stesso. Google “logs” se si sta utilizzando un CMS, o “logs” e ” logs ” se si sta eseguendo un’applicazione personalizzata, per ottenere ulteriori informazioni sulla ricerca dei log in questione.
Debug del codice dell’applicazione
Se tutto il resto fallisce, potrebbe essere che un problema in un codice personalizzato all’interno dell’applicazione stia causando il problema., Prova a diagnosticare da dove potrebbe provenire il problema tramite il debug manuale dell’applicazione, insieme all’analisi dei registri dell’applicazione e del server. Idealmente, eseguire una copia dell’intera applicazione su una macchina di sviluppo locale ed eseguire un processo di debug passo-passo, che consentirà di ricreare lo scenario esatto in cui si è verificato 302 Found
e visualizzare il codice dell’applicazione nel momento in cui qualcosa va storto.,
Non importa quale sia la causa, l’aspetto di un302 Found
all’interno della propria applicazione Web è una forte indicazione che potrebbe essere necessario uno strumento di gestione degli errori per aiutarti a rilevare automaticamente tali errori in futuro. Il meglio di questi strumenti può anche avvisare te e il tuo team immediatamente quando si verifica un errore. Il software di monitoraggio degli errori di Airbrake fornisce il monitoraggio degli errori in tempo reale e la segnalazione automatica delle eccezioni per tutti i progetti di sviluppo., La dashboard Web all’avanguardia di Airbrake ti assicura di ricevere aggiornamenti di stato 24 ore su 24 sullo stato dell’applicazione e sui tassi di errore. Indipendentemente da ciò su cui stai lavorando, Airbrake si integra facilmente con tutti i linguaggi e i framework più diffusi. Inoltre, Airbrake semplifica la personalizzazione dei parametri di eccezione, mentre ti dà il controllo completo del sistema di filtraggio degli errori attivo, in modo da raccogliere solo gli errori che contano di più.,
Dai un’occhiata al software di monitoraggio degli errori di Airbrake oggi e scopri di persona perché così tanti dei migliori team di ingegneri del mondo usano Airbrake per rivoluzionare le loro pratiche di gestione delle eccezioni!