iOS WKWebview 设置请求头信息(包含UA与自定义字段)

在webView中,有时候我们不可避免的需要重新设置webView的UA信息或者 是添加部分的自定义字段上传,以下是我们项目的一个案例:

// 如果这个方法的返回值是YES的话就继续加载这个请求,如果是NO的话就不加载了
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
  //拦截URL,判断http或https请求头部信息
    if ([parseRet[@"protocol"] isEqualToString:@"http"] || [parseRet[@"protocol"] isEqualToString:@"https"]) {
        NSMutableURLRequest *mutableRequest = [navigationAction.request mutableCopy];
        NSDictionary *headFields = mutableRequest.allHTTPHeaderFields;
        NSString *    uuid  = headFields[@"MDEVICEID"];//登录的token
        //判断请求头是否存在uuid字段,如果否,则表示该请求尚未设置请求头
        if ([uuid  length] == 0) {
            //IDFA
            //此处需要传的是客户端的uuid
            NSString* uuid = [MTDGlobalObject shareGlobalObject].uuid;
            if (uuid && ![uuid isEqualToString:@""]) {
                [mutableRequest addValue:uuid forHTTPHeaderField:@"MDEVICEID"];
            } else {
                [mutableRequest addValue:@"" forHTTPHeaderField:@"MDEVICEID"];
            }
            //登录头部信息,自定义的登录字段等
            MTDUserModel *user = [MTDGlobalObject shareGlobalObject].currentUser;
            [mutableRequest setValue:user.userAuthToken ? user.userAuthToken :@"" forHTTPHeaderField:@"MAUTH"];
            [mutableRequest setValue:user.userAuthCode?user.userAuthCode : @"" forHTTPHeaderField:@"MAUTHCODE"];
            //重新加载设置后的请求
            [webView loadRequest:mutableRequest];
        }
    }
    decisionHandler(WKNavigationActionPolicyAllow);//允许跳转
}

设置webView的全局UA

//该设置针对的是全局webView的UA变更
- (void)setWebViewUA
{
    //修改webView UA
    WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero];
    _wkwebView = webView;
   //获取自定义的UA重置字符串
    NSString *UA = [[MTDGlobalObject shareGlobalObject] getUAStr:MTDUATypeWebView];
    //替换本地中的UA内容
    [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":UA}];
    [[NSUserDefaults standardUserDefaults] synchronize];
    //设置webView的UA
    [_wkwebView setCustomUserAgent:UA];
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容