WKWebView访问时不携带Cookie的解决方案
2024-01-08 06:20:14
使用WKWebView框架开发h5的APP时,访问h5页面不携带Cookie。
经过定位,发现问题是在使用AFNetworking访问时禁用了cookie:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];
NSHTTPCookieStorage的cookie策略状态是持久化存储的,在不删除APP的情况下,他会始终保持原来的策略。所以即便删除上述代码,更新APP,NSHTTPCookieStorage的cookie策略依然不会改变。
如果需要在不删除当前APP的情况下更改策略,只能再次执行设置策略的代码以更新策略,更新为NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain(这是NSHTTPCookieStorage的默认策略),建议在APP启动时执行:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];
更新后,NSHTTPCookieStorage的cookie策略成功改变,但是WKWebView依然不携带cookie。
查询文档,发现ios17之后,WKWebView有独立的cookie管理机制。在设置关闭NSHTTPCookieStorage的cookie策略后(NSHTTPCookieAcceptPolicyNever),WKWebView的cookie策略也会被关闭。但是重新设置打开NSHTTPCookieStorage的策略(NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain),并不会同时打开WKWebView的cookie策略。
需要通过如下代码打开WKWebView的cookie策略:
if (@available(iOS 17.0, *)) {
[[[WKWebsiteDataStore defaultDataStore] httpCookieStore] setCookiePolicy:WKCookiePolicyAllow completionHandler:^{
}];
}
这样WKWebView就可以正常携带cookie了。
文章来源:https://blog.csdn.net/cuibo1123/article/details/135447739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!