ios - SFSafariViewController cookies

标签 ios cookies safari sfsafariviewcontroller nshttpcookiestorage

我了解到,从 iOS9 开始,您应该能够使用 SFSafariViewController 读取 cookie。

如果我使用以下 JS 在我的页面上设置 cookie:

var dd = new Date(Date.now() + 1000 * 60 * 60 * 24).toGMTString();
var expires = "expires="+ dd;
document.cookie = "mycookie=cookievalue; " + expires  + " domain=.mydomain.co.uk ; path=/ ";

如果我这样做:

- (void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully
{
  NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
  NSArray *cookiesArray = [storage cookies];
}

cookiesArray 始终为空。

如果我使用传统的 UIWebView

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
  NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
  NSArray *cookiesArray = [storage cookies];
}

我得到了我期待的 cookie。

知道我可能做错了什么吗?

最佳答案

SFSafariViewController 基本上是一个 Safari 进程,在您的应用之外运行。您的应用将无权访问 SFSafariViewController 使用的 cookie,就像您的应用无权访问 Safari 应用本身中的 cookie 一样。

如果您需要此功能,则需要坚持使用 UIWebViewWKWebView

关于ios - SFSafariViewController cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226012/

相关文章:

css - 为什么在 Safari 上转换翻译不能正常工作?

javascript - 可能的 Safari 错误?修复了相对 div 内的 div 没有动画

objective-c - 使用 NSCoding 编码/解码 double

javascript - 站点之间的 Cookie

java - 如何在 tomcat 8 中将 Cookie 处理器更改为 LegacyCookieProcessor

python - 在Python中打开网站框架或图像

ios - Alamofire 总是给我错误状态代码 500 作为响应

ios - NSTimer 问题(闭包、@objc 等)

ios - tasskated : killed app because its use of the com. apple.developer.ubiquity-container-identifiers 授权是不允许的

safari - 最新 Safari 中 Web Worker 中的 IndexedDb?