2010-05-31 61 views
3

从DB显示数据通常我在这种情况下PHP头重定向不重装<iframe>在IE

  1. 我在页面a.php只会显示来自DB数据,
  2. 用户执行某些操作(例如编辑/删除等)和页B.php被加载到执行的动作,
  3. 一旦网页B所执行的动作,它重定向浏览器页面A,
  4. 页A是自动步骤期间重新加载(3)为此它显示

为了使网页B重定向到页A I使用一个简单的PHP中的数据的更新状况

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

这适用于所有情况,,除非页面A.php代替:在这种情况下,它不会重新加载(步骤4没有完成)。 这似乎只发生在IE7(不知道关于IE8),它在FF/Safari完美的作品。 并且只有在使用时,如果页面A.php不在中,则在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 

不过我很好奇,如果你可能遇到了同样的问题太多在过去,如果你给我一些关于这方面的建议?

回答

0

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

您所做的修复处理高速缓存控制和过期,它由session_start()和/或session_cache_limiter()更改。尽管如此,这种行为很奇怪,可能是一个IE-7特定的错误。

+0

不,不使用会话。 – 2010-06-01 09:28:45

0

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

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

+0

是的,同一个域名! – 2010-06-01 09:28:06

+0

我总是在标题中提供完整的url,这是HTTP requiremnts。 – 2010-06-08 20:06:36

0

我见过这种情况发生在IE11上。首先,在某些情况下,如果重定向网址与原始iframe网址具有相同的协议,则IE会更好地播放。

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