2010-05-31 32 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"')