2009-10-08 126 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即可。

相關問題