如果表单上次导致重定向,则Firefox 3不允许“返回”表单

时间:2008-11-07 08:48:19

标签: firefox redirect

问候,

这是我遇到的问题。我有一个页面,第一次访问时会直接重定向到另一个页面。但是,如果用户单击“返回”,则页面的行为会有所不同,而是显示内容(跟踪会话ID以确保这是第二次加载页面)。为此,我告诉用户的浏览器禁用相关页面的缓存。

这在IE7中运行良好,但Firefox 3不会让我点击“返回”到导致重定向的页面。我认为这样做是为了防止典型的反向 - >重定向再次循环,这会让很多用户感到沮丧。关于我如何覆盖这种行为的任何想法?

阿列克谢

编辑:我们重定向到的页面是一个我们无法控制的外部网站。服务器端重定向不起作用,因为这不会在浏览器中生成“后退”按钮。

引用:

  

线程中的一些人正在谈论服务器端重定向和重定向头(同样的事情)......请记住,我们需要客户端重定向,这可以通过两种方式完成:

     

a)META标题 - 不推荐,并且存在一些问题   b)Javascript,可以通过至少三种方式完成(“location”,“location.href”和“location.replace()”)

     

服务器端重定向不会也不应该激活后退按钮,并且不能显示典型的“你现在将被重定向”页面......所以这不好(这就是我们正在做的事情)那一刻,实际上..你立即被重定向到“幸运”页面。)

5 个答案:

答案 0 :(得分:2)

我认为Mozilla团队通过打破这种特别恼人的模式向正确的方向迈出了一步。找到解决办法的方法无论如何都会违背目的,不是吗?

当用户第一次点击时,您可以简单地使页面呈现方式不同,而不是在第一次遇到时重定向。在服务器端应该很容易,因为你已经拥有了能够做出这种区分的代码。

答案 1 :(得分:1)

我非常赞成Firefox的行为。

重定向的最基本方法是让服务器将HTTP status code 302 + Location header发送回客户端。这样,客户端(通常是浏览器)不会将请求URI放入其历史记录中,而只是将相同的请求重新发送到提倡的URI。

现在看来Firefox也开始将bevaviour应用于尝试重定向的服务器响应,例如通过Javascript的onload事件。

如果您希望浏览器不显示页面,我认为最好的解决方案是服务器不首先发送页面。

答案 2 :(得分:1)

您可以通过在执行重定向之前创建iframe并在iframe的表单字段中保存页面状态来解决此问题。所有浏览器都会保存iframe的表单字段。

This pag e非常好地描述了如何使其发挥作用。这与谷歌地图在您点击地图搜索结果时使用的技术相同。

答案 3 :(得分:0)

它可能有助于消除重复的行动。

人们做很多事情的方式是

第1页 - > [行动] - >第2页 - >没有动作参数重定向到第2页。

现在,如果您被允许在这种情况下单击后退按钮并访问没有重定向的页面,则会盲目地重新执行操作。

相反,firefox假设服务器发送重定向标头是有充分理由的。

虽然注意到,但是你可以在重定向标题之后传递内容,发送重定向标题(至少在php中)不会终止执行,所以从理论上讲,如果你要重新定位重定向请求,你会得到页面做奇怪的东西。

(我通过相同的函数调用完成所有重定向的事实来避免这种情况,我在重定向之后直接调用显式终止,因为人们在编码时假设这是它的行为方式)

答案 4 :(得分:0)

在firefox的URL窗口中输入about:config
在firefox中更改此设置 browser.sessionstore.postdata
从0变为1