Выполните действие, и перенаправление на тот же URL-адрес не обновит страницу.

StackOverflow https://stackoverflow.com/questions/1538994

Вопрос

Мы работаем над новым веб-сайтом, используя 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 не обновляет страницу.У нас возникла та же проблема, когда мы перенаправляли пользователя на ту же страницу, на которой он был раньше.

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

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

Кстати.Вышеупомянутое решение — единственное известное мне решение для подобной ошибки во флэш-памяти в IE.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top