“Grazie per la pubblicazione. Per favore attendi mentre verrai reindirizzato. " Necessario?


11

Grazie per la pubblicazione. Per favore attendi mentre verrai reindirizzato.

Se non vieni reindirizzato automaticamente, fai clic qui.

Probabilmente hai familiarità con messaggi come questi, specialmente quando usi il web negli anni '90 o all'inizio degli anni 2000. Nei miei progetti, non ho mai trovato un motivo per far attendere 2-3 secondi mentre l'utente viene reindirizzato dopo la registrazione o la pubblicazione di qualcosa, ad esempio. Ma questo schema si presenta continuamente, anche in software Web popolari come PHPBB.

La mia domanda è: il reindirizzamento ha ancora un posto / necessità nello sviluppo web moderno (ajaxy)? Ci sono situazioni che richiedono assolutamente il reindirizzamento come questo, in definitiva fastidioso per l'utente, e quali sono le ragioni tecniche dietro di loro ? Perché non reindirizzare all'istante se è necessario un reindirizzamento?


Solo un'ipotesi: forse è in qualche modo correlato alla prevenzione di azioni o robot con script? Ci sono metodi migliori per farlo, però (captcha ecc.).

A causa della richiesta dell'utente, ho modificato la mia installazione di PHPBB per reindirizzare immediatamente. Ci sono voluti solo un paio di cambi di linea e funziona perfettamente.
André Paramés,

@Martin: forse, ma in tal caso è completamente fuorviato, poiché qualsiasi bot può seguire i reindirizzamenti come qualsiasi browser (specialmente se c'è un'intestazione Location, come in PHPBB).
André Paramés,

Risposte:


3

Ci sono situazioni che richiedono assolutamente il reindirizzamento come questo, in definitiva fastidioso per l'utente, e quali sono le ragioni tecniche dietro di loro?

L'intento più comune (generalmente nel caso di una richiesta che crea un nuovo record in un database, elabora una transazione di pagamento, ecc.) È la prevenzione di richieste duplicate qualora l'utente prema il pulsante "Aggiorna" e rispedisca nuovamente la richiesta.

Il reindirizzamento ha ancora un posto / bisogno nello sviluppo web moderno (ajaxy)?

Se riesci a cavartela dicendo agli utenti che hanno Javascript disabilitato che le loro richieste verranno ignorate o eventualmente gestite male ( mi viene in mente il messaggio "Non fare clic su Invia più di una volta!" ), Ma non è un grande sforzo per supportare quelle eccentriche Gli utenti con disabilitazione JS e assicurano che il reparto fatturazione non veda occasionalmente il reclamo di doppia fatturazione, quindi il reindirizzamento di qualche tipo è ancora implementato in molte interfacce.

Perché non reindirizzare all'istante se è necessario un reindirizzamento?

Il reindirizzamento deve essere emesso istantaneamente se l'obiettivo è impedire l'invio di più moduli: nel caso di reindirizzamenti a tempo, forse sono orientati verso server lenti, non sono riusciti a tenere conto di un blocco basato sulla sessione o stanno provando a risolvere un problema più esoterico.


"è la prevenzione di richieste duplicate" --- lo fa anche il reindirizzamento della posizione silenziosa. "Il reindirizzamento dovrebbe essere emesso istantaneamente se l'obiettivo è impedire l'invio di più moduli" --- non dovrebbe, perché F5su Stand bypagina provocherà anche il re-invio dei post.
zerkms,

@zerkms - Sto suggerendo un reindirizzamento verso una nuova posizione prima che venga inviato un corpo di risposta (ovvero nessuna pagina "stand by")
danlefree

5

Prima di tutto, non tutti i browser reindirizzeranno quando viene fornita un'intestazione di posizione. In secondo luogo, non tutti i browser reindirizzeranno con Javascript perché è disabilitato. Terzo, non tutti i browser supporteranno i tag meta-refresh. Uno di questi casi è probabilmente molto raro, quindi probabilmente non importerà. Ma anche se lo fa, puoi sovrapporre tutti questi metodi, penso.

Il modo in cui lo fanno le pagine di PHPBB (aspetta 5 secondi o qualcosa del genere) non è affatto necessario. Dovrebbe reindirizzare immediatamente e, in caso contrario, visualizzerà la pagina HTML (che ha meta-aggiornamento e Javascript su di essa e testo con un collegamento) dopo aver inviato le intestazioni. Non c'è quasi alcuna possibilità che questa pagina venga effettivamente visualizzata da un normale browser se è programmata correttamente.


"Prima di tutto, non tutti i browser reindirizzeranno quando viene fornita un'intestazione di posizione" [citazione necessaria]
Jon Cram

@Jon Cram: tecnicamente i proxy Web e le estensioni potrebbero interferire con l'intestazione della posizione. Il browser potrebbe anche essere un agente utente non standard e il proprietario del sito sta cercando di scoraggiarli seguendo collegamenti fuori sede presentando qualcosa che un utente può facilmente seguire.
Brian Lyttle,

Ti sto leggendo correttamente in quella chiamata la header()funzione di PHP potrebbe effettivamente essere ignorata? Questo mi preoccupa molto. Ero già a conoscenza dei metodi di reindirizzamento HTML e JS e di come siano meno affidabili, ma non ho mai pensato che un'intestazione HTTP inviata dal lato server potesse effettivamente essere ignorata.
Lotus Notes

1
@Lotus Molte persone non inviano correttamente l'intestazione, che è il problema più grande. Dovresti includere un codice 3xx prima che molte persone non lo facciano. Un browser potrebbe ignorare questa richiesta se lo desidera (e sono sicuro che alcuni client lo fanno; non i browser tradizionali però)
Joe Phillips,

Si noti inoltre che un'intestazione di posizione dovrebbe inviare un URL assoluto , ma questo viene spesso ignorato.
Piskvor lasciò l'edificio il

3

Mando sempre un reindirizzamento nell'intestazione della risposta con il codice di stato HTTP corretto (ad es. 301 o 302 - consultare http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ), che si traduce in un reindirizzamento immediato. Non sono a conoscenza di buoni motivi tecnici per cui qualcuno dovrebbe visualizzare una "attendere prego mentre si è reindirizzati pagina".


1

Il motivo principale per fare ciò è che sul sito viene registrato un reindirizzamento. La pagina potrebbe caricare Google Analytics, ma i dati saranno anche nei blog.

Se invii un reindirizzamento utilizzando le intestazioni HTTP, il browser si sposterà sull'altro sito senza effettuare ulteriori richieste al sito originale. Il tracciamento basato su Javascript può cogliere queste uscite, ma offre al proprietario del sito migliori opportunità di tracciamento.

In alcuni casi potresti anche voler fornire una dichiarazione di non responsabilità all'utente di quanto non venga reindirizzato. Ciò è particolarmente importante per i webmaster che lavorano in settori regolamentati. Se non lavori in un settore regolamentato come quello bancario o farmaceutico, non apprezzerai molto questi requisiti.


Quindi, in sintesi, questo modello è necessario solo se è necessario tenere traccia delle azioni degli utenti sul sito Web?
Lotus Notes

0

Inoltre, consente al pulsante Indietro di funzionare correttamente.

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.