C# IFRAME中的Internet Explorer和客户端证书

C# IFRAME中的Internet Explorer和客户端证书,c#,asp.net,internet-explorer,iframe,certificate,C#,Asp.net,Internet Explorer,Iframe,Certificate,我对使用客户端证书进行身份验证的站点有问题。该站点包含一个iframe,用于加载托管在不同服务器上的页面。此页还使用客户端证书 这是完美的,除了“内部页面”Web服务器中的一个小故障有时会导致它丢失用户的身份验证状态(所讨论的站点是ASP.NET)。我正试图找到一种方法来从中优雅地恢复,但我无法通过设置HTTP响应代码和/或WWW认证头让Internet Explorer重新传输客户端证书。最多,它会显示一个基本的用户名/密码提示 当我在Internet Explorer 8中打开同一站点的新选

我对使用客户端证书进行身份验证的站点有问题。该站点包含一个iframe,用于加载托管在不同服务器上的页面。此页还使用客户端证书

这是完美的,除了“内部页面”Web服务器中的一个小故障有时会导致它丢失用户的身份验证状态(所讨论的站点是ASP.NET)。我正试图找到一种方法来从中优雅地恢复,但我无法通过设置HTTP响应代码和/或WWW认证头让Internet Explorer重新传输客户端证书。最多,它会显示一个基本的用户名/密码提示

当我在Internet Explorer 8中打开同一站点的新选项卡时,它在该选项卡中工作正常,但在原始选项卡中,客户端证书将仅对“外部”网站可见。重新加载页面没有帮助。我唯一的选择是关闭该选项卡并开始使用新选项卡


以前有人在IE中见过这种行为吗?有没有办法让它重新传输客户端证书?

您需要在HTTP响应中添加一个P3P头,告诉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=”我们的“)

或者,如果希望它是站点范围的,您可以在web.config中设置它。

试试这个