2009-10-08 122 views
3

我们正在使用Apache,Python和Django开发新网站。执行操作并重定向到相同的URL不会刷新页面

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

我们站在:

http://website.fr/search/

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

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

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

http://website.fr/search/

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

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

+0

什么代码并开发应用程序发送?如果您使用Live HTTP Headers或类似的功能来跟踪所有的标题,它会很有用。 – 2009-10-08 16:46:07

+0

开发应用程序发送相同的代码。我们在Firefox和Windows上遇到这个问题,但是因为我们不使用Windows ... – Natim 2009-10-08 17:22:56

+0

我在最近的一个项目中做了一些非常类似的事情 - 您如何处理重定向? – 2009-10-08 22:45:35

回答

3

会发生什么情况是,浏览器要求输入新的URL,然后通过302重定向回到之前的那个,它位于缓存中,因此不会刷新。像Piotr一样添加一个随机整数可以解决这个问题。对于随机性,您可以使用简单的时间戳。

如果您正在执行向前执行操作的含义,那么您的应用程序将变得不可靠,并且禁止用户为结果添加书签 - 我想知道它是否真的是您想要执行的操作。

可能值得尝试使用303或307状态码而不是302,也许这种行为有所不同。

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

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

+0

我最常使用303 ,我想这可能是你想要的。 – Kev 2009-10-13 14:58:20

+0

http://code.djangoproject.com/ticket/6227 没错。谢谢 :) – Natim 2009-10-13 16:43:10

0

如何重定向到

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

请提供完整的HTTP会话。如果你需要一个更好的解决方案。 可以使用萤火虫或活的http标题追踪对话。

Btw。上面的解决方案是我唯一知道的IE浏览器闪存类似错误。

1

我会说你做错了。同一个网址应该是同一个网页。所有使用HTTP和Web浏览器的人都假设这一点,当你不遵循这个约定时,你将会陷入困境。只需将搜索参数和排序顺序作为查询参数添加到URL即可。

相关问题