1

问候,

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

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

阿列克谢

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

去引用:

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

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

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

4

5 回答 5

2

我认为 Mozilla 团队打破了这种特别烦人的模式,朝着正确的方向迈出了一步。想办法绕过它以某种方式违背了目的,不是吗?

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

于 2008-11-07T08:56:21.573 回答
1

我强烈支持 Firefox 的行为。

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

现在,Firefox 似乎也开始将这种行为应用于尝试重定向的服务器响应,例如通过 Javascript 的 onload 事件。

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

于 2008-11-07T10:26:22.750 回答
1

您可以通过创建 iframe 并将页面状态保存在 iframe 中的表单字段中来解决此问题,然后再进行重定向。所有浏览器都保存 iframe 的表单字段。

这个页面很好地描述了如何让它工作。当您单击地图搜索结果时,这与谷歌地图使用的技术相同。

于 2010-02-08T06:28:00.667 回答
0

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

人们做事的很多方式是

page 1 -> [Action] -> page 2 -> 重定向到没有操作参数的 page 2。

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

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

尽管注意到,您可以在重定向标头之后传递内容,但发送重定向标头(至少在 php 中)不会终止执行,因此理论上,如果您忽略重定向请求,您将获得页面做奇怪的事情。

(我规避了这一点,因为我们所有的重定向都是通过同一个函数调用完成的,我在重定向之后直接调用显式终止,因为人们在编码时假设这是它的行为方式)

于 2008-11-07T09:57:42.590 回答
0

在 firefox 的 URL 窗口中输入 about:config
将 firefox
browser.sessionstore.postdata中
的这个设置从 0 改为 1

于 2010-03-06T11:29:53.410 回答