2012-08-18 8 views
14

私は竜巻からバックエンドにログインして、secure_cookieを送り返しました。私が設定したsecure_cookieを検証している限り、他の情報も要求できることがわかりました。 NSURLConnectionはCookieを永続的に保持するか、Cookieはアプリケーションを終了すると削除されますか?NSURLConnectionはサーバーから送信されたCookieを自動的に保持しますか?

これは、Appleのドキュメントに記載されている:

URLローディングシステムが自動的にNSURLRequestのために適切な任意の保存されたクッキー を送信します。リクエストによって が送信されないように指定されている場合を除きます。

+0

この質問に対する回答はありませんか? 「NSURLConnectionはCookieをどれくらい保持しますか?またはユーザーがアプリを閉じるとCookieが削除されますか?」 – RubyGladiator

答えて

24

あなたの質問にはいくつかの面があります。

NSURLConnectionは、デフォルトで、デバイスの設定に基づいてCookieを管理します。 Cookieはストアに保存され、必要に応じて送信されます(ドメインが既存のCookieと一致する場合)。つまり、Cookieストアに保存されたCookieを使用してURLからリクエストを行うと、そのURLが送信されます。これはあなたが言及した行動を説明しています。一般に、デフォルト設定では、クッキーはかなりの間持続します。

この初期のステートメントは、あなたのニーズには役に立たないかもしれません。私はこのsecure_cookieフィールドの期限切れを制御したい(または "永遠に"残しておきたい)かもしれないと仮定していますので、あなたのアプリは今後さらに認証する必要はありません。

この場合、NSHTTPCookieStorageが表示されます。

[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL::[NSURL URLWithString: "http://example.com"] @]:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie](プラス設定を

と設定このクラスは、検索の両方にあなたをできるようになります

オンラインでの他のユーザーの経験とフィードバックに基づいて、Cookieストレージが常に100%信頼できるとは限りません。サーバーに特定のCookieと値を送信する場合は、その値をアプリ(prefsやCore Dataなど)に保存し、起動時に適切なNSHTTPCookieStorageでCookieをリセットする必要があります。

+0

私に関係する唯一の問題は、アップルのdocsからのこのqouteです: "注:アプリケーションのCookie受け入れポリシーを変更すると、実行中の他のすべてのアプリケーションのCookie受け入れポリシーに影響します。NSHTTPCookieStorageは、NSHTTPCookieStorageCookiesChangedNotificationとNSHTTPCookieStorageAcceptPolicyChangedNotification通知をポストすることで、アプリケーションに通知します。 "したがって、NSURLConnectionのデフォルトのCookie管理を使用する必要があるようです。 – RubyGladiator

+3

@RubyGladiator、そのドキュメントはMac OSです上記の注釈は、iOSでは当てはまらないと言っていると思います。 iOS注:iOSのアプリケーションではCookieは共有されません。 –

+0

これは真実です。 – RubyGladiator

2

here からクッキーキャッシュ管理を調べる必要があります。これは、クッキーのキャッシュの処理方法を理解するのに役立ちます。

もう一つの非常に良いdescriptionがあります。ここでは、ヘッダーフィールドからクッキーを取得し、それを完全に制御できることが記載されています。必要に応じて、アプリケーションを再度起動したときに保存して使用します。

私はこれがあなたの解決に役立つことを願っています。

関連する問題