Выполнить действие и перенаправление на тот же URL не обновляет страницу - PullRequest
3 голосов
/ 08 октября 2009

Мы работаем над новым веб-сайтом, используя Apache, Python и Django.

На этапе разработки никаких проблем, но после привязки к Apache с использованием Firefox 3.5.3 мы получили странную проблему.

Мы стоим на:

http://website.fr/search/

Когда мы хотим изменить порядок исследования, мы отправляем пользователю:

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

Эта страница меняет переменную сеанса и перенаправляет с кодом 302 на:

http://website.fr/search/

Проблема в том, что Apache отправляет код Apache 302, а Firefox не обновляет страницу. У нас такая же проблема, когда мы перенаправляем пользователя на ту же страницу, на которой он был раньше.

Как сделать принудительное обновление страницы?

Ответы [ 3 ]

4 голосов
/ 13 октября 2009

Что происходит, браузер запрашивает новый URL и через 302 перенаправляется обратно на предыдущий, который находится в кеше и, следовательно, не обновляется. Добавление случайного целого числа, как предлагает Петр, решит проблему. Для случайности вы можете использовать простую временную метку.

Последствия выполнения вперед по мере того, как вы делаете, делают ваше приложение безрезультатным и запрещают пользователю создавать закладки для результатов - интересно, действительно ли это то, что вы хотели бы сделать.

Возможно, стоит попытаться использовать код состояния 303 или 307 вместо 302, возможно, он ведет себя по-другому.

Смотрите также: http://en.wikipedia.org/wiki/HTTP_302

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

1 голос
/ 13 октября 2009

Я бы сказал, что вы делаете это неправильно. Тот же URL должен быть на той же странице. Все с HTTP и веб-браузерами предполагает это, и если вы не будете следовать этому соглашению, вы попадете в беду. Просто добавьте параметры поиска и порядок сортировки в качестве параметров запроса к URL.

0 голосов
/ 08 октября 2009

Как насчет перенаправления на

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

Пожалуйста, предоставьте полный http разговор, если вам нужно лучшее решение. Разговор можно отследить, используя firebug или live http заголовки.

Btw. Вышеупомянутое решение - единственное, что я знаю для подобной ошибки во вспышке на IE.

...