缓存 - 显示受登录保护的页面

时间:2010-07-07 18:22:50

标签: caching html5 manifest

如何让用户进行身份验证,然后下载专门为他们创建的离线应用程序?

我正在创建一个供离线使用的公钥/私钥加密系统,每个用户都需要能够使用表单登录并“下载”他们的加密/解密页面(app.php)。此表单将它们转储到app.php页面上,并提供缓存清单文件。应用程序需要在本地存储其加密和解密密钥以通过Javascript使用。在没有任何登录信息的情况下访问此页面(app.php)应返回错误页面。任何更新都是通过ajax到api.php进行的,并存储在localstorage中,因此物理下载页面并将其保存在某处不起作用(localstorage对本地文件不起作用)。

这是我的cache-manifest.php文件:

<?php header("Content-Type: text/cache-manifest"); ?>CACHE MANIFEST
# v1.2
app.php

NETWORK:
api.php

登录后刷新应用程序(通过POST请求)会导致显示错误页面,而不是浏览器加载缓存的应用程序。

编辑:

我怀疑POST请求与缺少缓存有关。在初始下载过程中观看firebug显示:

POST app.php 200 - Includes the application to be cached
GET app.php 401 - The error page - this is being cached instead

1 个答案:

答案 0 :(得分:1)

POST请求是问题,所以我必须为每个用户创建一个唯一的下载链接,然后将它们重定向到该链接。链接需要能够从浏览器中至少击中两次,因此我将每个链接的超时时间设置为1小时,然后再使其无效。 cache-manifest文件也必须使用唯一的url修改:

http://.../app.php?instanceid=(md5)

<?php header("Content-Type: text/cache-manifest"); ?>CACHE MANIFEST
# v1.2
app.php?instanceid=<?php echo $_GET['instanceid']; ?>


NETWORK:
api.php