根据我迄今为止的经验,我得出的结论是HTML5 Manifest方案的设计非常糟糕。
我的网站在用户登录时提供清单文件。不幸的是,当他们注销时,他们仍然可以访问缓存的受保护资料。谁能想到解决这个问题的方法?
答案 0 :(得分:3)
清单文件旨在使网站脱机并仍能够导航。它本质上只是告诉浏览器下载并保存缓存中的东西。如果您向清单添加秘密内容并且用户离线,他需要能够仍然访问它 - 或者如果他必须登录(因此在线),有什么特别的登录清单文件?
您可以添加用于检查用户是否再次联机的javascript,如果是,则尝试验证“登录状态”并重定向或从localstorage中删除秘密内容(如果您使用localstorage来保存“秘密”内容和javascript显示它而不是清单文件)
让我们说秘密的东西是一个图像,你没有使用清单文件,但只是在用户登录时显示图像及其crusial,用户在注销后无法查看该图像,你需要设置http标题到no-cache和cache-expire到过去的某个随机日期,这样普通用户就会再看到它了。问题是,每次有人访问网站时都会下载图像..
答案 1 :(得分:2)
您需要以不同的方式处理HTML5应用程序缓存。它对缓存服务器端动态生成的页面没有用,特别是那些需要登录才能访问的页面。应用程序缓存没有登录的概念,也没有从具有不同/无登录的人那里保护页面。
对于基于AJAX的站点更为合适,其中所有HTML / CSS / JavaScript都是静态的并在应用程序缓存中注册,而数据则通过AJAX获取,然后用于填充页面。如果需要在应用程序中缓存数据以供脱机使用,则可以使用其中一种脱机数据存储机制(如本地存储/会话存储或IndexedDB)来获取数据。
然后,您可以自行判断要离线缓存的数据量,因为在离线时无法调用自然无法访问的服务器时无法验证登录信息。
答案 2 :(得分:1)
如果用户退出或未登录,他们会获得仅包含网络的清单:*