iOS 在WKWebView设置多个Cookie(总结我跑过的坑)

本文详细介绍了在iOS中使用WKWebView设置多个Cookie时遇到的关键点,包括通过字典创建NSHTTPCookie对象、初始化时注入JavaScript、处理重定向、嵌套对象的Cookie存储以及中文字符编码问题。提供了相关的代码示例,帮助开发者解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不废话,1-直接说坑;2-po代码。

1-直接说坑

重点1: 通过字典设置相关参数,生成NSHTTPCOOKie对象。我这里生成了三个。并装填进数组中。并给request的HTTPHeaderField进行keyValue赋值。

重点2: 初始化webView时,要进行对javaScript进行注入。所有的cookie拼接成一个字符串。用分号和换行符隔开。(保证在首次load前,cookie中的数据已存入。)

重点3: 每次进行重定向,也就是调用WKWebView如下代理方法时。都要获取Cookie,并再次传入。保证每次loadURL,都能获取到Cookie

-(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

重点4: cookie中如果要传嵌套对象。比如一个包含多个字典的数组,则需要通过NSData 中转,转换为字符串。存入cookieValue中。

重点5:iOS中的cookie不能有中文,需要encode后传入,相应的,如果JS端不能识别,则需要decode。保证安卓和iOS都能存入cookie。这里主要是前端人员的事务。需要沟通。

2-po代码

初始化WKWebView

-(WKWebView*)webV{
   
    if (_webV==nil) {
   
        WKWebViewConfiguration*configuration=[[WKWebViewConfiguration alloc]init];
        // 设置偏好设置
        configuration.preferences = [[WKPreferences alloc] init];
        configuration.preferences.minimumFontSize = 10;
        configuration.preferences.javaScriptCanOpenWindowsAutomatically = NO;
        // 默认认为YES
        configuration.preferences.javaScriptEnabled = YES;
        configuration.userContentController = [[WKUserContentController alloc] init];
        configuration.allowsInlineMediaPlayback = YES;
        
        configuration.processPool = [[WKProcessPool alloc]init];
        
        // web内容处理池
        configuration.processPool = [[WKProcessPool alloc] init];
 
//        LHX20181206 设定UserKey_cookie
        NSDictionary *dictCookie_userKey = [NSDictionary dictionaryWithObjectsAndKeys:@"user_key", NSHTTPCookieName,
                                          _dlModel.user_key, NSHTTPCookieValue,
                                          @"/", NSHTTPCookiePath,
                                          self.uustr, NSHTTPCookieDomain,nil];
        
        NSHTTPCookie *cookieUserKey = [NSHTTPCookie cookieWithProperties:dictCookie_userKey];
//        LHX20181206 设定UserKey_cookie
        NSDictionary *dictCookie_loToken = [NSDictionary dictionaryWithObjectsAndKeys:@"loToken"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值