3

我们正在开发一个使用 Apache、Python 和 Django 的新网站。

在开发阶段,没有问题,但是一旦绑定到 Apache,使用 Firefox 3.5.3,我们就遇到了一个奇怪的问题。

我们坚持:

http://website.fr/search/

当我们想改变研究的顺序时,我们将用户发送到:

http://website.fr/search/order/price/

此页面更改会话变量并使用代码 302 重定向到:

http://website.fr/search/

问题是 Apache 发送了 302 Apache 代码,而 Firefox 没有刷新页面。当我们将用户重定向到他之前的同一页面时,我们遇到了同样的问题。

我们应该怎么做才能强制刷新页面呢?

4

3 回答 3

5

发生的情况是,浏览器请求新的 URL,并通过 302 重定向回前一个 URL,该 URL 在缓存中,因此不会刷新。添加一个随机整数,就像 Piotr 建议的那样可以解决这个问题。对于随机性,您可以使用简单的时间戳。

在你做的时候向前执行的含义会使你的应用程序不稳定并禁止用户为结果添加书签——我想知道这是否真的是你想要做的。

尝试使用 303 或 307 状态码而不是 302 可能是值得一试的,这可能表现不同。

另见: http ://en.wikipedia.org/wiki/HTTP_302

http://en.wikipedia.org/wiki/Representational_State_Transfer

于 2009-10-13T14:38:54.203 回答
1

我会说你做错了。相同的 URL 应该是相同的页面。HTTP 和 Web 浏览器的一切都假设这一点,如果你不遵循这个约定,你就会给自己带来麻烦。只需将搜索参数和排序顺序作为查询参数添加到 URL。

于 2009-10-13T05:52:43.473 回答
0

如何重定向到

http://website.fr/search/?ignoredvar=<random int>

如果您需要更好的解决方案,请提供完整的 http 对话。可以使用 firebug 或实时 http 标头跟踪对话。

顺便提一句。上面的解决方案是我所知道的唯一一个在 IE 上闪现类似错误的解决方案。

于 2009-10-08T17:32:04.933 回答