IE 302 проблема перенаправления без кэширования - PullRequest
6 голосов
/ 29 декабря 2008

Переадресация 302 возвращается после публикации информации. Этот редирект предназначен для перезагрузки текущей страницы.

Это все работает нормально, но IE добавляет No-Cache в заголовок:

Cache-Control: no-cache

Мы используем Squid для кэширования нашего контента и помещаем его в заголовок, обходя squid.
Поскольку это перенаправление используется довольно часто (пути к этому нет), это существенно увеличивает нагрузку на нашу систему.

Firefox не имеет этой проблемы, он просто запрашивает перенаправленную страницу без изменения заголовка, что именно то, что мы хотим.

Можем ли мы что-то сделать, чтобы IE не добавил no-cache?

Ответы [ 2 ]

3 голосов
/ 18 июля 2009

Захватывающий. Это действительно проблема IE без прямого обходного пути. Проблема заключается в том, что IE безоговорочно добавит заголовок запроса Cache-Control: no-cache (или заголовок запроса Pragma: no-cache, если у вас есть прокси) в запрос HTTP POST.

Это, несомненно, было введено в IE более десяти лет назад для размещения прокси-серверов с ошибками, которые неправильно обрабатывали запросы HTTP POST и неправильно возвращали кэшированные ответы.

Причудой IE является то, что при перенаправлении заголовки без кэширования повторно добавляются в перенаправленный запрос. Следовательно, в вашем случае ваш перенаправленный запрос также отправляет заголовок запроса «без кэширования», перенесенный из запроса POST.

К сожалению, прямого обходного пути для этого нет. Вы можете перенаправить пользователей IE на промежуточную страницу, которая использует JavaScript, чтобы перенаправить их обратно на исходную страницу. (Не используйте META REFRESH, потому что это ВСЕГДА отправляет запросы без кэширования).

0 голосов
/ 29 декабря 2008

Для меня это звучит как ошибка в IE. Это обсуждение звучит похоже. Возможно, вы можете попытаться отправить ответ 301 или 307, чтобы посмотреть, будет ли он отвечать по-другому.

...