>我有一个HTML5应用程序,它使用缓存清单来提供离线功能。此应用程序在联机时进行 ajax 调用,其中一些调用可能会获得 403 未经授权的响应。
这是我的cache.manifest文件的底部:
NETWORK:
*
FALLBACK:
/ /offline
如果我删除回退部分,所有接收 403 响应的 ajax 调用都按预期工作,我可以使用 jQuery 错误处理程序检测到这一点并将用户重定向到登录表单。
但是,如果存在回退部分,则相同的调用将获得 200 OK 响应,将回退 HTML 的内容作为正文,即使服务器回复了 403,所以我无法知道用户未经身份验证并且必须发送到登录页面。
我在这里错过了什么吗?提前致谢
将随机数作为查询参数添加到您要查找的 jQuery-AJAX 页面将解决问题;即
$.ajax({
url: "/data.html?"+ Math.random(),
// other properties here...
});
来自 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'
});