在ios Safari 6中的Ajax发布请求不起作用

时间:2012-09-24 12:45:27

标签: javascript ios ajax mobile-safari ios6

升级到iOS6.0发布后,ajax登录页面停止工作。 即使在添加随机查询字符串参数并将Cache-control设置为“no-cache”(这些在网络上找到作为缓存问题的解决方案)后,看起来jquery $ .ajax发出的ajax post请求也会缓存在safari中。 第一次登录尝试工作正常,但在第二次登录请求浏览后,浏览器没有从服务器获取任何响应正文。只有标题。

在IOS 6 GM和5版本以及所有桌面浏览器中也是如此。

任何想法?

2 个答案:

答案 0 :(得分:5)

我刚刚在ars technica阅读了这篇与您的问题相关的文章。 它似乎是苹果公司在iOS6中“过度优化”Safari。

答案 1 :(得分:1)

这里还详细介绍了这个主题: Is Safari on iOS 6 caching $.ajax results?

但是,上面没有提到另外一个注释。

WCF有一个有用的评论,它也适用于ASP.NET MVC应用程序和SetCacheability。我建议这些调用仅限于非GET请求,以避免在GET上失去缓存的好处。

我使用一个所有控制器继承的Controller基类有很多原因,这很好用,因为我的Initialize覆盖可以处理设置我的缓存头。

public class SmartController : Controller
{
    ...
    public HttpContextBase Context { get; set; }

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        Context = requestContext.HttpContext;

        if (Context.Request.RequestType != "GET")
        {
            Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        }

        base.Initialize(requestContext);
        ...
    }
...
}