我有一个小型的开源应用程序。
我使用[NSString stringWithContentsOfURL]
下载网站的html并检查用户是否已登录Safari。
在El Capitan之前,一切正常:stringWithContentsOfURL
使用了sharedCookiesStorage(Safari的),并以登录用户的身份返回页面的html。
但是在El Capitan中这不是这样的:stringWithContentsOfURL
返回页面的html,用户没有登录。所以它不再使用Safari的cookie。 (我在Safari中登录此页面。)
El Capitan有一些变化,我必须将我的所有域名添加到NSExceptionDomains
中的info.plist
,因此它可以从http://获取数据,但我没有找到任何更改在最新的OSX版本中的stringWithContentsOfURL
中。
可能是什么问题?在升级之前一切都很好。也许我可以某种方式将[NSHTTPCookieStorage sharedHTTPCookieStorage]
传递给[NSString stringWithContentsOfURL]
?
获取html的实际代码是:
html = [NSString stringWithContentsOfURL:[NSURL URLWithString: [trackerSettDict objectForKey:@"loginCheckURL"]] encoding: NSUTF8StringEncoding error:&error];
测试错误的一些代码:
NSError *error;
NSString *html;
html = [NSString stringWithContentsOfURL:[NSURL URLWithString: @"https://google.com"] encoding: NSWindowsCP1251StringEncoding error:&error];
NSLog(@"%@", html);
答案 0 :(得分:2)
在El Capitan,每个应用程序都有自己的cookie存储空间。您可以[NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier:"Cookies"]
访问Safari的Cookie存储空间。