HTML5缓存清单:不成功的ajax调用获得回退

时间:2012-06-04 10:28:30

标签: ajax html5 jquery cache-manifest application-cache

我有一个HTML5应用程序,它使用缓存清单来提供脱机功能。该应用程序在线时进行ajax调用,其中一些调用可以获得403未经授权的响应。

这是我的cache.manifest文件的底部:

NETWORK:
*

FALLBACK:
/ /offline

如果我删除了回退部分,接收403响应的所有ajax调用都按预期工作,我可以使用jQuery错误处理程序检测到这一点,并将用户重定向到登录表单。

但是如果存在回退部分,相同的调用会得到200 OK响应,并且回退HTML的内容作为正文,即使服务器回复了403,所以我无法知道用户未经过身份验证,并且必须被发送到登录页面。

我在这里遗漏了什么吗?提前致谢

2 个答案:

答案 0 :(得分:2)

将随机数作为查询参数添加到您正在寻找jQuery-AJAX的页面将解决该问题;即。

$.ajax({
  url: "/data.html?"+ Math.random(),
  // other properties here...
});

答案 1 :(得分:0)

来自http://alistapart.com/article/application-cache-is-a-douchebag#latest

以下是由于状态代码报告为0而导致错误的参考,这被解释为失败:

$.ajax( url ).always( function(response) {
 // Exit if this request was deliberately aborted
 if (response.statusText === 'abort') { return; } // Does this smell like an error?
 if (response.responseText !== undefined) {
  if (response.responseText && response.status < 400) {
   // Not a real error, recover the content    resp
  }
  else {
   // This is a proper error, deal with it
   return;
  }
 } // do something with 'response'
});