„Dziękujemy za opublikowanie. Czekaj, aż zostaniesz przekierowany. ” Potrzebne?

11

Dziękujemy za wysłanie. Czekaj na przekierowanie.

Jeśli nie nastąpi automatyczne przekierowanie, kliknij tutaj.

Prawdopodobnie znasz takie wiadomości, zwłaszcza gdy korzystasz z Internetu w latach 90. lub na początku 2000. W moich własnych projektach nigdy nie znalazłem powodu, aby na przykład użytkownik musiał czekać 2-3 sekundy na przekierowanie po rejestracji lub opublikowaniu czegoś. Ale ten wzór pojawia się cały czas, nawet w popularnych programach internetowych, takich jak PHPBB.

Moje pytanie brzmi: czy przekierowanie wciąż ma miejsce / potrzebę w nowoczesnym (ajaxy) tworzeniu stron internetowych? Czy są jakieś sytuacje, które absolutnie wymagają takiego przekierowania, ostatecznie denerwując użytkownika i jakie są przyczyny techniczne ? Dlaczego nie przekierować natychmiast, jeśli przekierowanie jest wymagane?

Lotus Notes
źródło
Tylko zgadnij: może ma to jakiś związek z zapobieganiem skryptowym działaniom lub botom? Są jednak lepsze metody na to (Captchas itp.).
Z powodu żądania użytkownika zmieniłem instalację PHPBB, aby przekierować natychmiast. Zajęło to tylko kilka zmian linii i działa idealnie.
André Paramés
@Martin: być może, ale jeśli tak, to całkowicie źle wprowadzony w błąd, ponieważ każdy bot może śledzić przekierowania jak każda przeglądarka (szczególnie jeśli istnieje nagłówek lokalizacji, jak w PHPBB).
André Paramés

Odpowiedzi:

3

Czy są jakieś sytuacje, które absolutnie wymagają takiego przekierowania, ostatecznie denerwując użytkownika i jakie są przyczyny techniczne?

Najczęstszym celem (zazwyczaj w przypadku żądania, które tworzy nowy rekord w bazie danych, przetwarza transakcję płatności itp.) Jest zapobieganie powielaniu żądań, jeśli użytkownik kliknie przycisk „Odśwież” i ponownie opublikuje żądanie.

Czy przekierowanie nadal ma miejsce / potrzebę w nowoczesnym (ajaxy) tworzeniu stron internetowych?

Jeśli uda ci się powiedzieć użytkownikom, którzy mają wyłączoną obsługę Javascript, ich prośby zostaną zignorowane lub prawdopodobnie źle potraktowane ( przychodzi mi na myśl komunikat „Nie klikaj więcej niż raz!” ), Ale to nie jest duży wysiłek, aby wesprzeć tych dziwacznych Użytkownicy z wyłączoną obsługą JS i upewnij się, że dział rozliczeń nie widzi sporadycznej reklamacji podwójnego rozliczenia, więc pewne przekierowania są nadal realizowane w wielu interfejsach.

Dlaczego nie przekierować natychmiast, jeśli przekierowanie jest wymagane?

Przekierowanie powinno zostać wydane natychmiast, jeśli celem jest zapobieganie przesyłaniu wielu formularzy - w przypadku przekierowań czasowych być może są one ukierunkowane na powolne serwery, nie uwzględniły blokady opartej na sesji lub próbują rozwiązać bardziej ezoteryczny problem.

danlefree
źródło
„to zapobieganie duplikacjom żądań” - robi to również ciche przekierowanie lokalizacji. „Przekierowanie powinno zostać wysłane natychmiast, jeśli celem jest zapobieganie przesyłaniu wielu formularzy” --- nie powinno, bo F5na Stand bystronie spowoduje również ponowne wysłanie posta.
zerkms
@zerkms - Sugeruję przekierowanie do nowej lokalizacji przed wysłaniem treści odpowiedzi (tj. brak strony „stand by”)
danlefree,
5

Przede wszystkim nie wszystkie przeglądarki będą przekierowywać, gdy otrzymają nagłówek lokalizacji. Po drugie, nie wszystkie przeglądarki będą przekierowywać za pomocą Javascript, ponieważ jest on wyłączony. Po trzecie, nie wszystkie przeglądarki obsługują tagi metaodświeżania. Każdy z tych przypadków jest prawdopodobnie bardzo rzadki, więc prawdopodobnie nie będzie miał znaczenia. Ale nawet jeśli tak, myślę, że można nakładać na siebie wszystkie te metody.

Sposób, w jaki robią to strony PHPBB (czeka 5 sekund lub coś takiego), wcale nie jest potrzebny. Powinien natychmiast przekierować, a jeśli nie, wyświetli stronę HTML (która zawiera metaodświeżanie i Javascript oraz tekst z linkiem) po wysłaniu nagłówków. Prawie nie ma szans, że ta strona zostanie wyświetlona przez zwykłą przeglądarkę, jeśli jest odpowiednio zaprogramowana.

Joe Phillips
źródło
„Po pierwsze, nie wszystkie przeglądarki będą przekierowywać, gdy otrzymają nagłówek lokalizacji” [potrzebne źródło]
Jon Cram
@Jon Cram: technicznie internetowe serwery proxy, a rozszerzenia mogą kolidować z nagłówkiem lokalizacji. Przeglądarka może być również niestandardowym agentem użytkownika, a właściciel witryny próbuje ich zniechęcić za pomocą linków zewnętrznych, prezentując coś, co użytkownik może łatwo obserwować.
Brian Lyttle,
Czy czytam cię poprawnie w tym wywołaniu header()funkcja PHP może być faktycznie zignorowana? To mnie bardzo martwi. Wiedziałem już o metodach przekierowania HTML i JS i o tym, jak są one mniej niezawodne, ale nigdy tak naprawdę nie sądziłem, że nagłówek HTTP wysyłany po stronie serwera może zostać zignorowany.
Lotus Notes
1
@Lotus Wiele osób nie wysyła poprawnie nagłówka, co jest większym problemem. Powinieneś dołączyć kod 3xx przed nim, czego wiele osób nie robi. Przeglądarka mogłaby zignorować tę prośbę, gdyby chciała (i jestem pewien, że niektórzy klienci tak robią; choć nie przeglądarki z głównego nurtu)
Joe Phillips
Zauważ również, że nagłówek lokalizacji ma wysyłać bezwzględny adres URL, ale często jest to ignorowane.
Piskvor opuścił budynek
3

Zawsze wysyłam przekierowanie w nagłówku odpowiedzi z odpowiednim kodem stanu HTTP (np. 301 lub 302 - patrz http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ), co powoduje natychmiastowe przekierowanie. Nie znam żadnych dobrych technicznych powodów, dla których ktoś wyświetlałby „poczekaj, aż przekierujesz stronę”.

Will Peavy
źródło
1

Głównym powodem tego jest fakt, że w witrynie, do której nastąpiło przekierowanie, zapisywany jest zapis. Strona może załadować Google Analytics, ale dane będą również znajdować się w blogach.

Jeśli wyślesz przekierowanie za pomocą nagłówków HTTP, przeglądarka przejdzie do innej witryny bez żadnych dodatkowych żądań do oryginalnej strony. Śledzenie oparte na JavaScript może złapać te wyjścia, ale daje właścicielowi witryny większe możliwości śledzenia.

W niektórych przypadkach możesz również chcieć przekazać użytkownikowi zrzeczenie się odpowiedzialności, niż jest ono przekierowywane. Jest to szczególnie ważne dla webmasterów pracujących w regulowanych branżach. Jeśli nie pracujesz w regulowanej branży, takiej jak bankowość lub farmaceutyki, nie docenisz tych wymagań.

Brian Lyttle
źródło
Podsumowując, ten wzorzec jest konieczny tylko wtedy, gdy chcesz śledzić działania użytkowników na stronie?
Lotus Notes
0

Pozwala także na prawidłowe działanie przycisku Wstecz.

Cześć71
źródło