3

サーバーの安全な情報にアクセスしていますが、要求に応じてアプリに大量の Cookie を送信します。問題は、一部の Cookie がセッションのみであり、使用する場合:

[NSHTTPCookie requestHeaderFieldsWithCookies:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:theCookie]]

JSESSIONID という名前のセッションは返されず、問題が発生します。完全な NSHTTPCookieStorage を NSLog すると、セッションのものを表示するので、そこにあるため、ストレージからそれらを取得する方法が見つかりません。また、Cookie plist を調べたところ、セッション Cookie はそこに保存されていませんが、これは単にセッション ベースであるためだと思います。

どんな助けでも大歓迎です。

編集:これは、すべての Cookie を要求したときに得られるもののスニペットです。

<NSHTTPCookie version:0 name:@\"TheNameOfTheCookie\" value:@\"A variable number\" expiresDate:@\"(null)\" created:@\"301196844.000000\" sessionOnly:TRUE domain:@\"THE URL\" path:@\"/\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]>

<NSHTTPCookie version:0 name:@\"JSESSIONID\" value:@\"A variable number\" expiresDate:@\"(null)\" created:@\"301196866.000000\" sessionOnly:TRUE domain:@\"The Same URL as above\" path:@\"/path\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]>

上記の Cookie の URL に基づいて Cookie を要求すると、最初の Cookie は返されますが、2 つ目は返されません。

*特定のアイテムを削除しなければならないことについて申し訳ありませんが、それらは予想どおりであり、質問には関係ありません

4

3 に答える 3

2

私はその問題を抱えていました。その理由は NSHTTPCookieDomain. Cookieには同じドメインが必要です

.... domain:@\"THE URL\" path:@\"/\" ....
.... domain:@\"The Same URL as above\" path:@\"/path\" ....

でなければなりません

.... domain:@\"NAME-DOMAIN" path:@"/" ....

私はそれを変更し、同じドメインとパスを入れて動作します

私のJSESSIONID:

<NSHTTPCookie version:0 name:"JSESSIONID" value:"7C9B0...........EB5" expiresDate:(null) created:2012-07-06 16:14:26 +0000 (3.63284e+08) sessionOnly:TRUE domain:"FOO" path:"/" isSecure:FALSE>
于 2012-07-06T16:23:19.183 に答える
0

問題を細かく分割してください。最初に確認してください。

[[NSHTTPCookieStorage sharedHTTPCookieStorage]
    cookiesForURL:[NSURL URLWithString:theCookie]]

あなたがそれが返すべきだと思うものを返します。そうでない場合は、の値を詳しく調べてくださいtheCookie

于 2010-07-16T21:58:46.353 に答える
0

渡す実際の URL は何-cookiesForURL:ですか? http://example.com/pathJSESSIONID Cookie エントリ (例: ) で指定されたものと一致するパスが URL にない場合、-cookiesForURL:メソッドはそれを返しません。

于 2012-04-15T23:20:23.653 に答える