PHP标头重定向不会在IE </iframe>中重新加载<iframe>

时间:2010-05-31 23:20:39

标签: php internet-explorer iframe header reload

显示来自数据库的数据时,通常我处于这种情况

  1. 我在页面A.php中显示来自DB的数据
  2. 用户执行某些操作(如编辑/删除等)和页面B.php被加载以执行操作,
  3. 一旦页面B执行了操作,它会将浏览器重定向到第A页
  4. 页面A在步骤(3)中自动重新加载因此显示数据的更新情况
  5. 为了使页面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 :(得分:0)

你在使用会话吗?如果是这样,您是否可以在没有会话且没有修复的情况下再次测试您的方案?

您所做的修复处理缓存控制和到期,由session_start()和/或session_cache_limiter()更改。不过,这种行为很奇怪,可能是IE-7特有的错误。

答案 1 :(得分:0)

内容与“外部”框架在同一个域中吗?

如果没有,您可能需要提供完整路径“http://...etc”。在header()中调用。

答案 2 :(得分:0)

我已经看到这发生在IE11上。首先,在某些情况下,当您的重定向网址与原始iframe网址具有相同的协议时,IE会发挥更好的效果。

此外,许多人能够通过添加P3P标头来解决类似问题。尝试在发送重定向标头之前添加:header('P3P: CP="CAO PSA OUR"')