WKWebView访问时不携带Cookie的解决方案

使用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了。

相关推荐

  1. WKWebView访问携带Cookie解决方案

    2024-01-08 09:46:01       131 阅读
  2. element-ui解决上传文件需要携带请求数据问题

    2024-01-08 09:46:01       52 阅读
  3. Android9.0以后允许HTTP访问解决方案

    2024-01-08 09:46:01       44 阅读
  4. 访问网站IP被阻止?解决方法

    2024-01-08 09:46:01       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 09:46:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 09:46:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 09:46:01       82 阅读
  4. Python语言-面向对象

    2024-01-08 09:46:01       91 阅读

热门阅读

  1. 如何在vscode下,启动jupyter连接远程服务器

    2024-01-08 09:46:01       59 阅读
  2. ObjectInputStream、ObjectOutputStream在TCP的使用

    2024-01-08 09:46:01       47 阅读
  3. 数据结构:STL:vector

    2024-01-08 09:46:01       48 阅读
  4. Spring和Spring Boot的区别

    2024-01-08 09:46:01       56 阅读
  5. SWUSTOJ 133: 水王争霸

    2024-01-08 09:46:01       55 阅读
  6. Vim 快速指南:高效删除文本行

    2024-01-08 09:46:01       54 阅读
  7. 函数指针

    2024-01-08 09:46:01       54 阅读
  8. Sentinel

    Sentinel

    2024-01-08 09:46:01      59 阅读
  9. qt第三天快速回顾

    2024-01-08 09:46:01       63 阅读
  10. 【软件测试】学习笔记-如何做好测试计划

    2024-01-08 09:46:01       54 阅读
  11. 前端工程师的未来

    2024-01-08 09:46:01       51 阅读
  12. 微软开源.net core如何在linux系统搂钱?

    2024-01-08 09:46:01       48 阅读
  13. 10-单例模式(Singleton)

    2024-01-08 09:46:01       59 阅读
  14. C++动态内存

    2024-01-08 09:46:01       51 阅读
  15. Excel4:数据匹配与连接

    2024-01-08 09:46:01       54 阅读
  16. C语言基本语句介绍

    2024-01-08 09:46:01       59 阅读
  17. 如何判断服务器是否被入侵了

    2024-01-08 09:46:01       58 阅读