2009-06-10 136 views
3

我有與使用客戶端證書進行身份驗證的網站有問題的客戶端證書。該網站包含一個加載託管在不同服務器上的頁面的iframe。此頁面也使用客戶端證書。Internet Explorer和在IFRAME

這完美的作品,除了在「內頁」的網絡服務器打嗝有時會導致它失去的用戶(問題的站點是ASP.NET)的認證狀態。我試圖找到一種方法來從中正常恢復,但我無法通過設置HTTP響應代碼和/或WWW身份驗證標頭來讓Internet Explorer重新傳輸客戶端證書。最多隻會出現一個基本的用戶名/密碼提示。

當我打開Internet Explorer 8中與同一個網站一個新的標籤,它會在該選項卡做工精細,但在原來的選項卡中的客戶端證書將只可見的「外部」的網站。重新加載頁面並沒有幫助。我唯一的選擇是關閉該選項卡,並開始使用新的..

有沒有人在IE中看到過這種行爲?有什麼辦法讓它重新發送客戶端證書嗎?

+0

試試這個http://weblogs.asp.net/coltk/archive/2010/10/13/session-lost-in-iframe-p3p-issue.aspx – 2011-08-02 02:21:45

回答

0

您將需要一個P3P頭添加到HTTP響應來告訴IE瀏覽器,一切都還好用在iframe的內容。

Cache-Control:private 
Content-Encoding:gzip 
Content-Length:13801 
Content-Type:text/html; charset=utf-8 
Date:Thu, 18 Aug 2011 16:59:18 GMT 
P3P:CP="CAO PSA OUR" 
Server:Microsoft-IIS/7.0 
Vary:Accept-Encoding 
X-AspNet-Version:4.0.30319 
X-Powered-By:ASP.NET 

您可以使用Response.AddHeader()來做到這一點。

Response.AddHeader("P3P", "CP=\"CAO PSA OUR\"")

或者,你可以將它設置在你的web.config,如果你希望它是網站廣泛。