3

我正在访问服务器的安全信息,它会根据请求向应用程序发送一堆 cookie。问题是一些cookies只是会话,当我使用时:

[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 时,第一个被返回,第二个没有。

*请注意,对于必须删除某些项目感到抱歉,它们符合预期,与问题无关

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

您传递到的实际 URL 是-cookiesForURL:什么?如果 URL 没有与您的 JSESSIONID cookie 条目中指定的路径匹配的路径(例如,http://example.com/path),则该-cookiesForURL:方法不会返回它。

于 2012-04-15T23:20:23.653 回答
0

请分解你的问题,首先检查是否

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

返回您认为应该返回的内容。如果不是,请仔细查看 的值theCookie

于 2010-07-16T21:58:46.353 回答