javascript - 在 iOS 应用程序中设置 cookie 并从 Safari 读取该 cookie

标签 javascript objective-c safari nshttpcookie

我正在尝试执行以下操作:在我的 appDelegate 中,我正在设置一个 cookie。之后,我尝试使用来自网络应用程序的 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]”中,应该有我在我的应用程序中设置的“yes”值。

大家觉得这可行吗?

谢谢!

最佳答案

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

编辑:如果你想要圆滑,你可以为你的 iOS 应用程序注册一个 URL 处理程序,然后将 URL 启动到你的网络应用程序。让您的网络应用程序设置 cookie,然后重定向回应用程序 URL。

关于javascript - 在 iOS 应用程序中设置 cookie 并从 Safari 读取该 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177066/

相关文章:

javascript - 使用数据通过 d3 转换方法生成散点图

javascript - 有没有办法在 Javascript 函数内更改原型(prototype)?

objective-c - 在 XCode Profiler 中注册用于符号化的应用程序

iphone - 如何解决 Objective C 中函数的警告隐式声明

在 iPhone 上的移动 Safari 中调试时,桌面 Mac 上的 Safari 开发人员拒绝显示控制台输出

javascript - 内容安全策略 : cannot load Mixpanel in Chrome extension

ios - 更新 RestKit 'lcl_RK.h' 文件未在 RKLog.h 中找到

html - Safari 10.1 – 文本对齐 : justify text goes outside the border in RTL languages

ios - Safari 中的 SVG 圆弧渲染瑕疵

javascript - 循环数组并在标签后创建表单输入标签