2010-07-16 58 views
3

我正在訪問服務器的安全信息,並根據請求嚮應用發送一串cookie。問題是一些餅乾只會話,當我使用:使用NSHTTPCookieStorage訪問會話cookie

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

它不具有名稱JSESSIONID並導致問題返回會話的。如果我NSLog完整的NSHTTPCookieStorage它顯示會話的,所以他們在那裏,我只是找不到一種方式來檢索他們的存儲。另外,我瀏覽了cookie plist,會話cookie不存儲在那裏,但我認爲這只是由於它們是基於會話的。

任何幫助表示讚賞。

編輯:這是我得到什麼,當我問所有的cookies一個片段:

<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:[]> 

現在,當我問基於上述餅乾URL餅乾,第一個被返回,第二一個沒有。

*備註不必刪除某些項目對不起,他們是預期和不相關的問題

+0

沒有實際的url或派生值(for我的部分'tr/a-z/z-a /'他們......)我們只能猜測:它可能是個案例問題嗎?一些網絡服務器不區分大小寫,而世界其他地方則不是。你能提供一個顯示行爲的自包含的例子嗎? – mvds 2010-07-19 06:04:47

+0

那麼它不是一個服務器問題,因爲實際的Cookie沒有從存儲中返回,我認爲這可能是一個命名問題,因爲有多個JSESSIONID條目。我甚至手動輸入了一個具有類似細節但不同網址的cookie,但無法檢索它。儘管有同名的JSESSIONID。 – Rudiger 2010-07-19 22:04:23

回答

0

請打破在片你的問題,首先檢查

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

回報你認爲它應該返回。如果不是,請仔細查看theCookie的值。

+0

我已經測試了通過Web瀏覽器獲得的內容,而不是通過iPhone應用獲得的內容,以及除了JSESSIONID之外的內容。我使用NSURLConnection從幾個不同的網站檢索內容。每一個我檢查我沒有得到任何JSESSIONID的,而我通過網絡瀏覽器 – Rudiger 2010-07-17 20:16:44

+0

這樣做有點模糊,你能提供一個代碼片段和跟蹤顯示你看到的?例如。完整的cookiejar和過濾的cookiesForUrl,包括URL。所以我們都可以看到這個奇怪的東西,並且可以解釋或至少重現它。 – mvds 2010-07-18 01:01:46

+0

已更新,不接近搞清楚。 – Rudiger 2010-07-19 01:54:41

0

什麼是你傳遞給-cookiesForURL:的實際URL?如果URL沒有與您的JSESSIONID Cookie條目中指定的路徑相匹配的路徑(例如,http://example.com/path),則-cookiesForURL:方法將不會返回它。

2

我有這個問題,原因是因爲NSHTTPCookieDomain。 餅乾必須具有相同的域名

.... 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>