在iOS应用中设置cookie并从Safari中读取该cookie

时间:2013-04-23 18:54:13

标签: javascript objective-c safari nshttpcookie

我正在尝试执行以下操作:在我的appDelegate中,我正在设置cookie。之后,我正在尝试使用来自webapp的JavaScript读取该cookie。这可能吗?因为我不能让它发挥作用......

这是我在iOS应用中的代码:

NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:@"test" forKey:NSHTTPCookieName];
[cookieProperties setObject:@"yes" forKey:NSHTTPCookieValue];
[cookieProperties setObject:self.siteURL forKey:NSHTTPCookieDomain];
[cookieProperties setObject:self.siteURL forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];

[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:9629743] forKey:NSHTTPCookieExpires];

NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; 

在我的JavaScript中,我使用jquery.cookie插件来编写和阅读cookie。但没有任何东西......这是我的代码:

cookieValue = $.cookie("test");
alert(cookieValue);

警报在正文中有“[object Object]”,并且应该在我的应用中设置“是”值。

你们认为这是可能的吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

不可能:第三方应用程序无法访问全局Safari cookie缓存,因为这将是一个重要的安全漏洞。如果您需要向Safari发送cookie信息,最好在Safari中使用cookie详细信息作为请求参数启动URL,然后在该URL末尾创建脚本并创建cookie并将其发回。

编辑:如果您想光滑,可以为您的iOS应用注册URL处理程序,然后启动您的网络应用程序的URL。让您的网络应用设置Cookie,然后重定向回应用网址。