防止iOS 6缓存Ajax POST请求

可能重复:
iOS 6上的Safari缓存$ .ajax结果吗?

我有一个使用PhoneGap的混合应用程序,可以在Android和iOS上正常运行。 但是当我开始在iOS 6中测试时,我注意到我没有获取大部分ajax调用的服务器数据 - 而是从以前的ajax调用中获取缓存的数据。

到目前为止,我已经尝试了以下选项来禁用缓存 -

  • 包含一个时间戳作为查询字符串参数
  • $.ajaxSetup({ cache: false });
  • 在ajax中调用no-cache = true
  • $.ajaxPrefilter(function (options, originalOptions, jqXHR) { options.data = jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new Date().getTime() })); });
  • 但这些似乎都没有奏效。 我从我的ajax调用中调用Java动作类 - 它会与上面列出的方法失败的原因有关吗?


    阅读此主题

    iOS 6上的Safari缓存$ .ajax结果吗?

    您可以在Web服务器级别禁用缓存,并在URL中使用时间戳。


    从这里

    如何解决它:有各种方法来防止缓存请求。 推荐的方法是添加一个无缓存头。

    这是如何完成的。

    jQuery

    检查iOS 6.0并像这样设置Ajax头。

    $.ajaxSetup({ cache: false });
    

    ZeptoJS

    检查iOS 6.0并像这样设置Ajax头。

    $.ajax({
    type: 'POST',
    headers : { "cache-control": "no-cache" },
    url : ,
    data:,
    dataType : 'json',
    success : function(responseText) {…}
    

    服务器端

    Java

    httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
    

    在将任何数据发送到客户端之前,请务必在页面顶部添加此项。

    。净

    Response.Cache.SetNoStore();
    

    要么

    Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
    

    PHP

    header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
    header('Pragma: no-cache'); // HTTP 1.0.
    
    链接地址: http://www.djcxy.com/p/55705.html

    上一篇: Prevent iOS 6 from Caching Ajax POST Requests

    下一篇: include antiforgerytoken in ajax post ASP.NET MVC