5

iOS6.0 リリースへのアップグレード後、ajax ログイン ページが機能しなくなりました。jquery $.ajax によって作成された ajax ポスト リクエストは、ランダムなクエリ文字列パラメーターを追加し、Cache-control を「no-cache」に設定した後でも safari にキャッシュされているようです (これらはキャッシュの問題の解決策としてネットで見つかりました)。最初のログイン試行は正常に機能しますが、2 回目のログイン要求でログアウトした後、ブラウザーはサーバーから応答本文を取得しません。ヘッダーのみ。

同じことが、IOS 6 GM および 5 バージョン、およびすべてのデスクトップ ブラウザで機能します。

何か案は?

4

2 に答える 2

5

私はあなたの問題に関連しているように見えるarstechnicaでこの記事を読んだばかりです。これは、iOS6でのSafariのAppleの「過剰最適化」のようです。

于 2012-09-24T12:52:20.123 に答える
1

このトピックは、ここでも詳細に説明されています: Is Safari on iOS 6 caching $.ajax results?

ただし、上記には含まれていない追加の注意事項が 1 つあります。

SetCacheability に関する ASP.NET MVC アプリケーションにも適用できる WCF に関する有用なコメントがありました。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);
        ...
    }
...
}
于 2012-11-18T22:38:08.810 に答える