10

我知道从 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];
}

我得到了我期待的饼干。

有什么想法我可能做错了吗?

4

1 回答 1

16

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

如果你需要这个功能,你需要坚持使用UIWebViewor WKWebView

于 2016-12-19T15:53:04.360 回答