“感谢您的发表。请在您重定向期间待命。” 需要吗


11

感谢您的发表。重定向时请等待。

如果您没有自动重定向,请单击此处。

您可能熟悉此类消息,尤其是在90年代或2000年代初使用网络时。例如,在我自己的项目中,我从未找到过让用户等待2-3秒的原因,而这些原因是在注册或发布内容后重定向用户。但是,即使在流行的Web软件(如PHPBB)中,这种模式始终存在。

我的问题是,重定向在现代(ajaxy)网络开发中是否仍然存在/需要?是否有任何情况绝对需要这样的重定向,最终使用户烦恼,其背后的技术原因是什么?为什么不立即重定向(如果需要重定向)?


只是一个猜测:也许与防止脚本操作或漫游器有关?不过,有更好的方法可以做到这一点(Captchas等)。

根据用户要求,我将PHPBB的安装更改为立即重定向。仅进行了几次更改,即可完美运行。
安德烈Paramés

@Martin:可能,但如果这样,那就完全被误导了,因为任何漫游器都可以像任何浏览器一样进行重定向(特别是如果有Location标头,如PHPBB)。
安德烈Paramés

Answers:


3

是否有任何情况绝对需要这样的重定向,最终使用户烦恼,其背后的技术原因是什么?

最常见的意图(通常是在数据库中创建新记录,处理付款交易等请求的情况下)是防止重复的请求,如果用户单击“刷新”按钮并重新发布该请求。

重定向在现代(ajaxy)网络开发中仍然有位置/需求吗?

如果您可以告诉那些禁用Javascript的用户,他们的请求将被忽略或可能被错误处理(“不要单击一次,请提交一次以上!”的提示),可以肯定-但这不是付出巨大的努力来支持那些古怪的事情禁用JS的用户,并确保计费部门不会偶尔看到两次开票投诉,因此仍在许多接口中实现了某种重定向。

为什么不立即重定向(如果需要重定向)?

如果目标是防止提交多个表单,则应立即发出重定向-在定时重定向的情况下,它们可能是针对缓慢的服务器,或者他们没有考虑基于会话的锁定,或者他们试图解决更深奥的问题。


“是防止重复请求”-静默位置重定向也可以做到这一点。“如果目标是防止提交多个表单,则应该立即发出重定向” ---不应这样做,因为F5Stand by页面上还会引起重新发送帖子。
zerkms 2011年

@zerkms-我建议在发送响应正文之前重定向到新位置(即没有“待命”页面)
danlefree 2011年

5

首先,并非所有浏览器都在给定Location标头后会重定向。其次,并非所有浏览器都将使用Javascript进行重定向,因为它已被禁用。第三,并非所有浏览器都支持meta-refresh标签。这些情况中的任何一种都可能非常罕见,因此可能无关紧要。但是,即使这样做,您也可以重叠所有我认为的方法。

完全不需要PHPBB页面执行该操作的方式(等待5秒钟左右)。它应该立即重定向,如果没有重定向,则在发送标题后将显示HTML页面(上面带有meta-refresh和Javascript以及带有链接的文本)。如果编程正确,则几乎不可能通过常规浏览器显示此页面。


“首先,当给定位置标头时,并非所有浏览器都将重定向” [需要引用]
Jon Cram

@Jon Cram:从技术上讲是Web代理,而扩展名可能会干扰位置标头。浏览器也可能是非标准的用户代理,站点所有者试图通过呈现用户可以轻松跟随的内容来阻止用户访问异地链接。
Brian Lyttle

我是否正确阅读了有关调用PHP header()函数的信息,但实际上是否将其忽略?这让我很担心。我已经知道HTML和JS重定向方法以及它们的可靠性如何,但是我从来没有真正想到过服务器端发送的HTTP标头实际上可以被忽略。
Lotus Notes

1
@Lotus很多人没有正确发送标头,这是更大的问题。您应该在其中包含3xx代码,但很多人却不这样做。浏览器可以根据需要忽略此请求(我敢肯定有些客户愿意;不过不是主流浏览器)
Joe Phillips

还要注意,位置标头应该发送一个绝对 URL,但是通常会忽略它。
Piskvor在2011年


1

这样做的主要原因是在您已重定向的站点上进行了记录。该页面可以加载Google Analytics(分析),但数据也将存储在网络日志中。

如果您使用HTTP标头发送重定向,则浏览器将转到其他站点,而无需对原始站点进行任何其他请求。基于Java的跟踪可能会捕获这些退出,但是它为站点所有者提供了更好的跟踪机会。

在某些情况下,您可能还希望向用户提供免责声明,而不是重定向用户。对于在受管制行业工作的网站管理员而言,这尤其重要。如果您不在银行或制药业这样的受监管行业工作,那么您对这些要求将不会感激。


因此,总而言之,仅当您需要跟踪用户在网站上的操作时才需要这种模式?
Lotus Notes

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.