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

发布于 2024-08-06 15:10:12 字数 621 浏览 4 评论 0原文

我们正在使用 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 不刷新页面。 当我们将用户重定向到他之前所在的同一页面时,我们遇到了同样的问题。

怎样才能强制刷新页面呢?

We are working on a new web site using Apache, Python and Django.

In the development phase, no problem but once binding to Apache, using Firefox 3.5.3, we got a strange problem.

We stand on :

http://website.fr/search/

When we want to change the ordering of the research, we are sending the user to :

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

This page change a session variable and redirect, with code 302, to :

http://website.fr/search/

The problem is that Apache send a 302 Apache code and that Firefox doesn't refresh the page.
We got the same problem when we are redirecting the user to the same page he was before.

How should we do to force the refresh of the page ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寒尘 2024-08-13 15:10:13

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

正如您所做的那样,向前执行的含义会使您的应用程序不稳定,并禁止用户为结果添加书签 - 我想知道这是否真的是您想要做的。

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

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

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

What happens is, the browser asks for the new URL and via 302 gets redirected back to the previous one, which is in the cache and thus not refreshed. Adding a random integer, like Piotr is suggesting will solve the problem. For randomness you can use simple timestamp.

Implication of performing forward as you are doing makes your app unRESTful and prohibits user bookmarking the results - i wonder if it is really what you would like to do.

It might be worth a try to try and use 303 or 307 status code instead of 302, maybe that behaves differently.

See also:
http://en.wikipedia.org/wiki/HTTP_302

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

风铃鹿 2024-08-13 15:10:13

我想说你这样做是错误的。相同的 URL 应该是相同的页面。所有 HTTP 和 Web 浏览器都假定这一点,如果您不遵循此约定,您就会陷入麻烦。只需将搜索参数和排序顺序作为查询参数添加到 URL 中即可。

I'd say you're doing it wrong. The same URL should be the same page. Everything with HTTP and web browsers assume this, and when you don't follow this convention you're going to get yourself into trouble. Just add the search parameters and sort orders as query parameters to the URL.

秋凉 2024-08-13 15:10:13

如果您需要更好的解决方案,如何重定向到

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

请提供完整的 http 对话。
可以使用 firebug 或实时 http 标头来跟踪对话。

顺便提一句。上述解决方案是我所知道的唯一解决 IE 上 Flash 中类似错误的解决方案。

How about redirecting to

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

Please provide the full http conversation If you need a better solution.
The conversation can be traced using firebug or live http headers.

Btw. The above solution is the only one I know for similar bug in a flash on IE.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文