执行操作并重定向到相同的URL不会刷新页面

时间:2009-10-08 16:35:31

标签: python django http httpwebrequest http-status-code-302

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

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

我们站在:

http://website.fr/search/

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

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

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

http://website.fr/search/

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

我们应如何强制刷新页面?

3 个答案:

答案 0 :(得分:3)

发生的情况是,浏览器要求新的URL,并且通过302被重定向回到前一个URL,它位于缓存中,因此不会刷新。添加一个随机整数,如Piotr建议将解决问题。对于随机性,您可以使用简单的时间戳。

在你做的时候进行前进的含义会使你的应用程序无法使用并禁止用户为结果添加书签 - 我想知道它是否真的是你想要做的。

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

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

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

答案 1 :(得分:1)

我说你做错了。相同的URL应该是同一页面。使用HTTP和Web浏览器的所有内容都假定这一点,当您不遵循此约定时,您将遇到麻烦。只需将搜索参数和排序顺序作为查询参数添加到URL。

答案 2 :(得分:0)

如何重定向到

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

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

顺便说一下。上面的解决方案是我在IE浏览器中知道的类似错误的唯一解决方案。