AppCache不适用于基于SSL的IE

时间:2014-07-31 20:41:21

标签: internet-explorer ssl html5-appcache

我们在IIS中有一个通过SSL托管的网站,我们在尝试使其在IE中脱机工作时遇到问题。

我们在IE 11中标记了登录页面,我们有以下IE Delete Browsing History 设置,以便IE不会在浏览器上删除Internet临时文件,本地存储和IndexedDB退出(注意保留收藏..复选框已选中)。

enter image description here

当我们通过HTTP / HTTPs访问IE中的页面时,IE正在正确缓存网站,并且正在创建IndexedDB数据存储。

我们面临以下问题:

退出浏览器时

  1. 该域的IndexedDB已被清除(对于两个HTTP / HTTP)
  2. Temporary Internet Files文件夹中存在缓存文件(HTML,CSS,JS等)。但是,当通过HTTP访问时,IE无法以脱机模式加载网站。当我监控网络呼叫时,我可以看到对着陆页的呼叫被中止。
  3. 当通过HTTP访问时,网站在离线模式下加载正常(当然没有离线数据,因为正在擦除IndexedDB)

    临时解决方案

    目前,我们同时取消选中了 Temporary Internet Files ... Cookies and website data ,以使我们的网站在离线状态下正常运行。

    问题

    1. 即使我们检查了 Preserve Favorites website data 并且域/目标网页已加入书签,IE是否正常消除IndexedDB?
    2. 为什么我可以通过HTTP而不是通过HTTP在脱机模式下访问网站,即使临时文件,清单等仍然存在。
    3. 有没有人通过这些浏览器设置让一个离线网站通过HTTP工作?

      更新

      我们最终必须取消选中Temporary Internet Files.." & Cookie和网站数据才能正常离线工作。但它还远非完美。我们正面临一个间歇性问题,即当窗口在一夜之间关闭时,缓存页面将无法加载。

1 个答案:

答案 0 :(得分:3)

根据更新缓存下的A Beginner's Guide to Using the Application Cache

  

一旦应用程序脱机,它将保持缓存状态,直到其中一个应用程序   发生以下情况:

     
      
  1. 用户清除其网站的浏览器数据存储空间。
  2.   
  3. 清单文件已修改。注意:更新清单中列出的文件并不意味着浏览器将重新缓存该资源。该   清单文件本身必须改变。
  4.   

如果是InPrivate浏览会话,那么我会期待您描述的行为。如果 IE 设置为将SSL页面写入磁盘(而不是InPrivate),那么我怀疑这些是IE中的错误,或者缺少与AppCache相关的功能。

有关讨论,请参阅MSDN上的Avoid “Do not save encrypted pages to disk”。讨论中也有一个有趣的脚注:

  

更新:在IE10中,现在不要将加密的页面保存到磁盘选项   表现不同。而不是试图阻止HTTPS资源   保存到磁盘,该选项将删除缓存从HTTPS   浏览器关闭时缓存中的资源。这有助于确保   即使启用此设置,浏览器也能正常工作。   该复选框将被重新标记为"在浏览器时清除HTTPS缓存   已关闭"但遗憾的是我们没时间了。

MSDN上还有Building Offline Experiences with HTML5 AppCache and IndexedDB。它可能会为您提供一些见解。最后,有5.7 Offline Web applications5.7.2 AppCaches的实际标准。但我不知道标准指定SSL / TLS加载页面的行为。

由于上面的第(1)项,它将使AppCache成为一个有问题的孩子。想象一下,用户删除在离线Web应用程序中创建的文字处理文档。或者想象一下,当用户清除缓存时,通过WebCrypto创建的银行配置秘密会被破坏。

这些问题似乎无穷无尽,它甚至打破了其他工作组(如WebCrypto)的使用案例。