"Obrigado por postar. Por favor, aguarde enquanto você é redirecionado. Necessário?

11

Obrigado por postar. Aguarde enquanto você é redirecionado.

Se você não for redirecionado automaticamente, por favor clique aqui.

Você provavelmente está familiarizado com mensagens como essas, especialmente ao usar a Web nos anos 90 ou no início dos anos 2000. Em meus próprios projetos, nunca encontrei um motivo para fazer o usuário esperar por 2 a 3 segundos enquanto é redirecionado após o registro ou publicação de algo, por exemplo. Mas esse padrão aparece o tempo todo, mesmo em softwares populares da web como o PHPBB.

Minha pergunta é: o redirecionamento ainda tem um lugar / necessidade no desenvolvimento da web moderno (ajaxy)? Existem situações que exigem absolutamente redirecionamentos como esse, enfim, irritam o usuário e quais são as razões técnicas por trás deles ? Por que não apenas redirecionar instantaneamente se um redirecionamento é necessário?

Lotus Notes
fonte
Apenas um palpite: talvez esteja relacionado à prevenção de ações com script ou bots? Porém, existem métodos melhores para fazer isso (Captchas etc.).
Devido à solicitação do usuário, alterei minha instalação do PHPBB para redirecionar imediatamente. Foram necessárias apenas algumas alterações de linha e funciona perfeitamente.
André Paramés
@ Martin: possivelmente, mas se isso for completamente errado, já que qualquer bot pode seguir redirecionamentos como qualquer navegador (especialmente se houver um cabeçalho de local, como no PHPBB).
André Paramés

Respostas:

3

Existem situações que exigem absolutamente redirecionamentos como esse, enfim, irritam o usuário e quais são as razões técnicas por trás deles?

A intenção mais comum (geralmente no caso de uma solicitação que cria um novo registro em um banco de dados, processa uma transação de pagamento, etc.) é a prevenção de solicitações duplicadas, caso o usuário pressione o botão "Atualizar" e repita a solicitação.

O redirecionamento ainda tem um lugar / necessidade no desenvolvimento da web moderno (ajaxy)?

Se você conseguir dizer aos usuários que têm o Javascript desabilitado que suas solicitações serão ignoradas ou possivelmente mal tratadas (a mensagem "Não clique em enviar mais de uma vez!" É lembrada)) com certeza - mas não é um grande esforço apoiar aqueles peculiares Os usuários com JS desabilitado e garantem que o departamento de cobrança não veja a reclamação ocasional de cobrança dupla, portanto, algum tipo de redirecionamento ainda é implementado em muitas interfaces.

Por que não apenas redirecionar instantaneamente se um redirecionamento é necessário?

O redirecionamento deve ser emitido instantaneamente se o objetivo é impedir o envio múltiplo de formulários - no caso de redirecionamentos cronometrados, talvez eles sejam voltados para servidores lentos, eles não levaram em conta um bloqueio baseado em sessão ou estão tentando resolver um problema mais esotérico.

danlefree
fonte
"é a prevenção de solicitações duplicadas" --- o redirecionamento silencioso de local também faz isso. "O redirecionamento deve ser emitido instantaneamente se o objetivo é impedir o envio de vários formulários" --- não deve, porque F5na Stand bypágina também haverá o reenvio da postagem.
Zerkms
@zerkms - Eu estou sugerindo um redirecionamento para um novo local antes de um corpo de resposta é enviada (ou seja, não "stand by" página)
danlefree
5

Primeiro de tudo, nem todos os navegadores serão redirecionados quando recebem um cabeçalho de local. Segundo, nem todos os navegadores serão redirecionados com Javascript porque estão desativados. Terceiro, nem todos os navegadores suportam as tags de atualização meta. Qualquer um desses casos é provavelmente muito raro, portanto, provavelmente não será importante. Mas, mesmo que isso aconteça, você pode sobrepor todos esses métodos, eu acho.

A maneira como as páginas do PHPBB o fazem (espera por 5 segundos ou algo assim) não é necessária. Ele deve redirecionar imediatamente e, caso contrário, exibirá a página HTML (que possui meta-refresh e Javascript e texto com um link) após o envio dos cabeçalhos. Não há quase nenhuma chance de que essa página seja exibida por um navegador comum se estiver programada corretamente.

Joe Phillips
fonte
"Primeiro de tudo, nem todos os navegadores serão redirecionados quando receberem um cabeçalho de localização" [citação necessário]
Jon Cram
@ Jon Cram: proxies da web e extensões tecnicamente podem interferir no cabeçalho da localização. O navegador também pode ser um agente de usuário não padrão e o proprietário do site está tentando desencorajá-lo a seguir links externos, apresentando algo que um usuário pode seguir facilmente.
Brian Lyttle
Estou lendo você corretamente na header()função de chamada do PHP que pode ser realmente ignorada? Isso me preocupa muito. Eu já conhecia os métodos de redirecionamento HTML e JS e como eles são menos confiáveis, mas nunca pensei que um cabeçalho HTTP enviado pelo servidor pudesse ser ignorado.
Lotus Notes
1
@Lotus Muitas pessoas não enviam o cabeçalho corretamente, o que é o maior problema. Você deveria incluir um código 3xx antes dele, o que muitas pessoas não fazem. Um navegador poderia ignorar este pedido se quisesse (e eu tenho certeza que alguns clientes fazem, não navegadores principais embora)
Joe Phillips
Observe também que um cabeçalho de local deve enviar um URL absoluto , mas isso geralmente é ignorado.
Piskvor saiu do prédio em
3

Eu sempre envio um redirecionamento no cabeçalho de resposta com o código de status HTTP adequado (por exemplo, 301 ou 302 - consulte http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ), o que resulta em um redirecionamento imediato. Não conheço boas razões técnicas para alguém exibir uma mensagem "aguarde enquanto a página é redirecionada".

Will Peavy
fonte
1

O principal motivo para fazer isso é que um registro é feito no site para o qual você foi redirecionado. A página pode carregar o Google Analytics, mas os dados também estarão nos weblogs.

Se você enviar um redirecionamento usando cabeçalhos HTTP, o navegador sairá para o outro site sem fazer nenhuma solicitação adicional ao site original. O rastreamento baseado em JavaScript pode capturar essas saídas, mas oferece ao proprietário do site melhores oportunidades para rastreamento.

Em alguns casos, você também pode fornecer um aviso de isenção de responsabilidade ao usuário do que ele está sendo redirecionado. Isso é particularmente importante para os webmasters que trabalham em setores regulamentados. Se você não trabalha em um setor regulamentado, como bancário ou farmacêutico, não terá muito apreço por esses requisitos.

Brian Lyttle
fonte
Então, em resumo, esse padrão só é necessário se você precisar acompanhar as ações de seus usuários no site?
Lotus Notes
0

Também permite que o botão voltar funcione corretamente.

Hello71
fonte