我了解到,从 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 一样。
如果您需要此功能,则需要坚持使用 UIWebView
或 WKWebView
。
关于ios - SFSafariViewController cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226012/