Перенаправление заголовка PHP не перезагружается <iframe>в IE - PullRequest
3 голосов
/ 01 июня 2010

При отображении данных из БД обычно я нахожусь в такой ситуации

  1. Я на странице A.php, которая показывает данные из БД,
  2. пользователь выполняет какое-либо действие (например, редактирование / удаление и т. Д.), И страница B.php загружается для выполнения действия,
  3. как только страница B выполнила действие, перенаправляет браузер на страницу A,
  4. страница A автоматически перезагружается во время шага (3) , поэтому она показывает обновленную ситуацию с данными

Чтобы перенаправить страницу B на страницу A, я использую простой PHP

header("Location: " . "A.php", TRUE, 302);

Это хорошо работает во всех ситуациях, за исключением случаев, когда страницы A.php выводятся в <iframe>: в таком случае он не перезагружается (шаг 4 не выполняется). Кажется, что это происходит только в IE7 (не знаю о IE8), он отлично работает на FF / Safari. И только при использовании <iframe>, если страница A.php не находится в <iframe>, она обновляется также в IE7.

Чтобы решить эту проблему, я просто добавил пару заголовков на страницу A.php, чтобы она не кэшировалась:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

Но мне было бы любопытно, могли ли вы столкнуться с такой же проблемой в прошлом, и если бы вы могли дать мне несколько советов по этому поводу?

Ответы [ 3 ]

0 голосов
/ 01 июня 2010

Находится ли контент в том же домене, что и "внешний" фрейм?

Если нет, вам может потребоваться указать полный путь " http: //...etc." в заголовке () вызов.

0 голосов
/ 24 января 2014

Я видел это до IE11. Во-первых, в некоторых случаях IE будет играть лучше, если ваш URL-адрес перенаправления имеет тот же протокол, что и исходный URL-адрес iframe.

Кроме того, многие люди смогли исправить подобные проблемы, добавив заголовок P3P. Попробуйте добавить это: header('P3P: CP="CAO PSA OUR"') перед отправкой заголовка перенаправления.

0 голосов
/ 01 июня 2010

Вы используете сеансы? Если да, можете ли вы снова протестировать свой сценарий без сеанса и без исправления?

Исправление, которое вы сделали, касалось управления кэшем и его срока действия, который изменяется на session_start() и / или session_cache_limiter(). Тем не менее, такое поведение странно, это может быть специфическая ошибка IE-7.

...