問題タブ [nshttpcookiestorage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - WKWebView、すべての Cookie を取得
WKWebView からすべての Cookie を取得したい。なんで?Web ベースの認証を使用するプロジェクトを開始しました。その結果、ユーザーがログインしていることを確認するため、および他の目的のために Cookie をインターセプトする必要があります。別のケース-ユーザーがログインした場合、彼がアプリを「殺す」と想像してください-このCookieセッションの保存の遅延により、失われます:(。
問題は、Cookie がキャッシュされ、すぐにファイルに保存されないことです。
(ここから @Kemenaran - 以下の p.5)
私が捕まえようとするポイント -
webView:decidePolicyForNavigationResponse:decisionHandler:
、
ただし、すべてのリクエストがナビゲーションであるとは限らないため、1 つの Cookie (私の場合) がスキップされます。以下の詳細を参照してください
私が試した他のオプションについてのいくつかの言葉...
- はい、iOS 11 以降では、ここで
WKHTTPCookieStore
言及したように使用できることを知っています。しかし、私のプロジェクトは iOS 9 以降をサポートする必要があります
ログインから5〜10秒後に必要なCookieが保存されることは100%確信しています
NSHttpCookieStorage
(少なくとも数日間のすべてのテストで確認されました)提供されたobserverを使用しようとしまし
NSHTTPCookieManagerCookiesChangedNotification
たが、内部にあるCookieに対してのみコールバックを提供しますwebView:decidePolicyForNavigationResponse:decisionHandler
また、ここで述べたようないくつかの JS を使用して Cookie を取得しようとし、ここからのすべての提案もテストします。ちなみに、本当に素晴らしい記事です。結果 - 陰性
このレーダー バグ、このSO の質問、サンプル プロジェクトも見つけましたが、このケースも防止したいと考えています。(削除だけでなく、保存にも適用されるこの投稿で説明されています)また、この状況は真であり、ユーザーがアプリを強制終了した場合、ユーザーがログインし、アプリを強制終了して再起動した場合が存在する可能性があります。そして、これを防ぎます(必要なCookieをチェックするだけ
NSHttpCookieStorage
でも良い考えではありません.ログイン直後に必要なCookieが少し遅れて保存される可能性があるため、このアプローチにはbool-powered
奇妙なように見えるいくつかの解決策が必要です..また、関連する問題についていくつかのSO投稿を読みましたが、最も役立つのは次のとおりです
しかし、まだ良い解決策はありません...
では、Cookie を取得する方法、または少なくとも強制的に Cookie を保存する方法はありますか?
ios - HTTPSCookiesStorage を使用して、URLSession の Cookie ストレージをスクリーニング (フィルター) できますか?
HTTPCookiesStorage をサブクラス化しましたが、storeCookies() が Cookie を保存することはありませんが、メソッド内で super.storeCookies() を呼び出しています。
カスタムの httpCookiesSession オブジェクトで構成をオーバーライドしない場合、セッションは Cookie を自動的に保存します。私はここでちょっと迷っています。
これは URLSession 呼び出しです
これがカスタムクラスです
更新 1 私の目的は、HTTP 応答ステータスが 401 のときに、Cookie を httpcookiesstore に保存しないことです。
uiwebview - REST API セッション Cookie を SFAuthenticationSession または SFSafariViewController と共有する
実際、私はNSURLSessionを使用して REST API サービスを呼び出しており、ヘッダーを提供するセッション Cookie を取得しています。同じ Cookie をSFAuthenticationSessionまたはSFSafariViewControllerと共有し、ログインせずに Web ページをロードしたいと考えています。
私の質問: API Cookie を共有し、ログインせずに Web ページをロードします。
NSURLSession から Cookie を取得するには、以下のコードを参照してください。
ios - Cookie は NSHTTPCookieStorage の有効期限後に自動的に削除されますか
私はクッキーを手動で NSHTTPCookieStorage に保存しており、クッキーの値を読みたいときはいつでも、クッキーストレージからすべてのクッキーを繰り返し、自分のクッキーを見つけて読んでいます。
問題は、Cookie の値を読み取ることができない場合があることです。Cookie の有効期限が切れると、CookieはsharedHTTPCookieStorageから自動的に削除されますか?
どうか明らかにしてください