2

(FWIW,我已经发布,以及这个问题到我的博客:http://blog.wolffmyren.com/2011/07/11/ie-protected-mode-ssl/IE保护模式+ SSL登录=无cookie的非SSL页面

有谁知道如何解决Internet Explorer保护模式限制而不要求最终用户将我们的网站添加到“受信任的站点”列表中?

问题是如果我们为我们的网站启用SSL登录,他们只能访问SSL页面。 IE会阻止我们的非SSL服务页面访问在SSL会话期间创建的cookie,因此我们可以通过SSL(非常昂贵/资源密集型)提供所有服务,或者找到一些方法设置SSL , SSL登录过程中的cookie。

此MSDN文章(ielowutil.exe与Internet Explorer 8.0有什么关系?)具有我找到的最相关的信息,但它讨论了使用Windows API,并且正在寻找可以解决的问题使用ASP.NET,JavaScript或其他一些交付良好的解决方案来实施。


更新:我的一个朋友共享这些链接,希望他们会帮助:

+0

SSL时下已经不是昂贵的,而不是资源密集型的,如果浏览器使用保持活动和/或SSL会话恢复(大多数浏览器都这样做)。 –

+0

同意,但通过像Akamai这样的CDN通过SSL(我们需要做)提供大量内容非常昂贵。 =( –

回答

1

它看起来像IIS是给你的安全在您的HTTPS连接上使用Cookie,这非常明智。这些cookie被设计为不会泄漏到普通的HTTP连接,因此得到的结果。

您可以创建一个辅助的,非安全的cookie,将一些身份验证信息传递到您网站的HTTP端。 但是,一旦你这样做了,不要认为在普通HTTP会话期间完成或发送的任何内容都是由合法认证用户完成的,如果在某个时候需要返回到HTTPS。将身份验证令牌从HTTPS传递到HTTP可能没有问题,但不是其他方式。 (当然,你仍然很容易受到普通HTTP的攻击,但这在你的应用中可能是一个可接受的风险。)

这个问题还有更多关于这个问题的内容(Tomcat的应用与任何Web服务器,包括IIS):Tomcat session management - url rewrite and switching from http to https

1

由于布鲁诺暗示,你应该检查与您的cookie(使用F12开发人员工具或提琴手)设置SECURE属性。如果是这样,你会在所有浏览器上看到这种行为。

如果不是,那么问题很可能是您在可信区域中,http://whatever.com也不在受信任区域中。如果这是你的配置,那么,保护模式是问题,我已经解释更彻底这里的根本原因:

http://blogs.msdn.com/b/ieinternals/archive/2011/03/10/internet-explorer-beware-cookie-sharing-in-cross-zone-scenarios.aspx