代码之家  ›  专栏  ›  技术社区  ›  Ian Wetherbee

缓存受登录保护的页

  •  1
  • Ian Wetherbee  · 技术社区  · 15 年前

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

    我正在创建一个供脱机使用的公钥/私钥加密系统,每个用户都需要能够使用表单登录并“下载”他们的加密/解密页面(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 回复  |  直到 15 年前
        1
  •  1
  •   Ian Wetherbee    15 年前

    POST请求就是问题所在,所以我必须为每个用户创建一个唯一的下载链接,然后将他们重定向到该链接。该链接需要能够从浏览器中被击中至少两次,所以我给了每个链接一个1小时的超时,然后使其无效。缓存清单文件还必须使用唯一的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
    
    推荐文章