4

我在我的移动应用程序中使用 jquery ajax 通过 restful api 获取我的 json 数据。我的 restful api 已配置为支持 etags。我的 restful api 托管在另一个子域上,所以我配置了 CORS 来处理跨域调用。在我的开发环境中,我已将我的移动应用程序配置为在 test.domain.com 上运行,并将 restful api 配置为在 test2.domain.com 中运行,以便我可以测试跨域调用。所有这些都很棒!我的 ajax 调用的行为与我对 etag 的预期完全一样:

调用获取 json 内容:

$.ajax({
    ifmodified: true,
    ....
    success: function(data){

    }

我得到一个状态 200 并且成功回调中的数据变量有数据。再次调用同一资源(不期望任何更改)我得到状态 304,并且成功回调中的数据变量具有数据(从缓存加载)。

到目前为止,一切都很好。

现在,如果我将我的开发环境配置为在同一个域上同时拥有我的移动应用程序和 restful api,这就是我遇到问题的地方。

$.ajax({
    ifmodified: true,
    ....
    success: function(data){

    }

我得到一个状态 200 并且成功回调中的数据变量有数据。再次调用同一资源(不期望任何更改)我得到状态 304 和未定义的数据变量!!!!

任何想法为什么使用此配置 jquery 不会用缓存中的内容填充数据变量?我还在我的 ajax 调用中删除了 CORS 和跨域设置,但仍然没有运气。我正在使用 jquery 1.7.1。

4

1 回答 1

0

默认情况下,总是发出请求,但浏览器可能会从其缓存中提供结果。要禁止使用缓存的结果,请将缓存设置为 false。如果自上次请求以来尚未修改资产,要使请求报告失败,请将 ifModified 设置为 true。

于 2012-04-07T19:13:49.347 回答