ฉันกำลังสร้างแอพ iPhone ด้วยคุกกี้ การลบคุกกี้ในการตั้งค่า Safari จะไม่ลบคุกกี้ เก็บไว้ที่ไหน? เป็นไปได้ไหมที่จะอ่านจาก UIWebView อื่น
ขอบคุณ!
ฉันกำลังสร้างแอพ iPhone ด้วยคุกกี้ การลบคุกกี้ในการตั้งค่า Safari จะไม่ลบคุกกี้ เก็บไว้ที่ไหน? เป็นไปได้ไหมที่จะอ่านจาก UIWebView อื่น
ขอบคุณ!
คำตอบ:
แอปพลิเคชันของคุณมี "โถคุกกี้" ของตัวเองอยู่ใน[NSHTTPCookieStorage sharedHTTPCookieStorage]
คอนเทนเนอร์
ต่อไปนี้เป็นวิธีที่คุณสามารถดูคุกกี้ในโถคุกกี้ของแอปพลิเคชันของคุณ
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
NSLog(@"%@", cookie);
}
มีหลายวิธีสำหรับการกรองและการจัดการ ดูเอกสารNSHTTPCookieStorageสำหรับการเข้าถึงคุกกี้และเอกสารNSHTTPCookieสำหรับการเข้าถึงคุณสมบัติคุกกี้แต่ละรายการ
cookiesForURL
วิธีนี้แทนcookies
ขอบคุณสำหรับตัวชี้ Alex! ในการเพิ่มสิ่งนี้ฉันจะทิ้ง "ที่ทิ้งคุกกี้" ของฉันที่ฉันสร้างโดยใช้ตัวอย่างของอเล็กซ์ บางทีนี่อาจจะช่วยคนอื่นได้
- (void) dumpCookies:(NSString *)msgOrNil {
NSMutableString *cookieDescs = [[[NSMutableString alloc] init] autorelease];
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies]) {
[cookieDescs appendString:[self cookieDescription:cookie]];
}
NSLog(@"------ [Cookie Dump: %@] ---------\n%@", msgOrNil, cookieDescs);
NSLog(@"----------------------------------");
}
- (NSString *) cookieDescription:(NSHTTPCookie *)cookie {
NSMutableString *cDesc = [[[NSMutableString alloc] init] autorelease];
[cDesc appendString:@"[NSHTTPCookie]\n"];
[cDesc appendFormat:@" name = %@\n", [[cookie name] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[cDesc appendFormat:@" value = %@\n", [[cookie value] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[cDesc appendFormat:@" domain = %@\n", [cookie domain]];
[cDesc appendFormat:@" path = %@\n", [cookie path]];
[cDesc appendFormat:@" expiresDate = %@\n", [cookie expiresDate]];
[cDesc appendFormat:@" sessionOnly = %d\n", [cookie isSessionOnly]];
[cDesc appendFormat:@" secure = %d\n", [cookie isSecure]];
[cDesc appendFormat:@" comment = %@\n", [cookie comment]];
[cDesc appendFormat:@" commentURL = %@\n", [cookie commentURL]];
[cDesc appendFormat:@" version = %d\n", [cookie version]];
// [cDesc appendFormat:@" portList = %@\n", [cookie portList]];
// [cDesc appendFormat:@" properties = %@\n", [cookie properties]];
return cDesc;
}
NSHTTPCookieStorage
: macdevelopertips.com/objective-c/objective-c-categories.html
อเล็กซ์มีความคิดที่ดีในการจัดหมวดหมู่นี้ นี่คือสิ่งที่ฉันใช้:
NSHTTPCookieStorage + ข้อมูล h
#import <Foundation/Foundation.h>
@interface NSHTTPCookieStorage (Info)
+ (NSDictionary*) describeCookies;
+ (NSDictionary *) describeCookie:(NSHTTPCookie *)cookie;
@end
NSHTTPCookieStorage.m
@implementation NSHTTPCookieStorage (Info)
+ (NSDictionary*) describeCookies {
NSMutableDictionary *descriptions = [NSMutableDictionary new];
[[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies] enumerateObjectsUsingBlock:^(NSHTTPCookie* obj, NSUInteger idx, BOOL *stop) {
[descriptions setObject:[[self class] describeCookie:obj] forKey:[[obj name] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}];
NSLog(@"Cookies:\n\n%@", descriptions);
return descriptions;
}
+ (NSDictionary *) describeCookie:(NSHTTPCookie *)cookie {
return @{@"value" : [[cookie value] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
@"domain" : [cookie domain] ? [cookie domain] : @"n/a",
@"path" : [cookie path] ? [cookie path] : @"n/a",
@"expiresDate" : [cookie expiresDate] ? [cookie expiresDate] : @"n/a",
@"sessionOnly" : [cookie isSessionOnly] ? @1 : @0,
@"secure" : [cookie isSecure] ? @1 : @0,
@"comment" : [cookie comment] ? [cookie comment] : @"n/a",
@"commentURL" : [cookie commentURL] ? [cookie commentURL] : @"n/a",
@"version" : @([cookie version]) };
}
@end
ทำให้เอาต์พุตเป็น "JSON-y" มากขึ้นเล็กน้อย ...
ในsandbox:Library->Cookies->Cookies.binarycookies
แต่คุณไม่สามารถเปิด.binarycookie
ได้โดยตรงคุณสามารถเรียกใช้สคริปต์:
ดาวน์โหลดและติดตั้ง Python
ดาวน์โหลดBinaryCookieReader.py
เรียกใช้ "Python BinaryCookieReader.py" บนเทอร์มินัล
อย่างที่คุณเห็นบันทึกผลลัพธ์มีคำอธิบายคุกกี้โดยละเอียด