WKWebview 注入header

2020-09-25  本文已影响0人  阿栋先森

最近在项目中遇到与H5交互,当时方案是在请求头中加入header,但是后面遇到了比如浏览器缓存header不更新,可以设置请求头中加入Cache-Control nocache 等字段或者在链接中加入时间戳防止缓存,后者方案可能相对来说不是很好。

在WKwebview因为加载请求是个异步操作,所以在初次webview loadrequest时候不需要加入header ,而是拦截webview的请求 ,在请求头中加入header,并且重复请求,但是还有一定问题 ,有时会有header丢失问题,所以我觉得最优解决方案是通过交互传参数可以解决这个问题,如果有更好方案请告诉我。

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    NSURLRequest * request =  navigationAction.request;
    NSMutableURLRequest * mutRequest = [request mutableCopy];
    NSString * urlString = request.URL.absoluteString;
    NSDictionary * dictHader = request.allHTTPHeaderFields;
    if (![dictHader objectForKey:@"token"]) {
        [mutRequest setValue:@"123" forHTTPHeaderField:@"token"];
        [webView loadRequest:mutRequest];
        decisionHandler(WKNavigationActionPolicyAllow);
    }else{
        decisionHandler(WKNavigationActionPolicyAllow);

    }
   NSLog(@"====== >>>>url----- %@ request %@",urlString,[request allHTTPHeaderFields]);
}
上一篇 下一篇

猜你喜欢

热点阅读