SFSafariViewController cookies

SFSafariViewController cookies

我了解到,从 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