2018-08-13 WKWebView 拦截请求头,重新添加请求头信息

WKWebView 拦截请求头,重新添加请求头信息

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
    NSLog(@"navigationAction = %@, \n request = %@", navigationAction, navigationAction.request.URL);
    // 禁止图片类型 a标签超链接跳转
    if ([[navigationAction.request.URL absoluteString] containsString:@".jpg"] ||
        [[navigationAction.request.URL absoluteString] containsString:@".jpeg"] ||
        [[navigationAction.request.URL absoluteString] containsString:@".png"] ||
        [[navigationAction.request.URL absoluteString] containsString:@".gif"]) {
        decisionHandler(WKNavigationActionPolicyCancel);
    }
    else if (navigationAction.navigationType == WKNavigationTypeBackForward){
        [webView reload];
        decisionHandler(WKNavigationActionPolicyAllow);
    }
    else{
        // 拦截请求头,重新添加请求头信息
        NSMutableURLRequest *mutableRequest = [navigationAction.request mutableCopy];
        NSDictionary *requestHeaders = navigationAction.request.allHTTPHeaderFields;
        if ([requestHeaders isKindOfClass:[NSDictionary class]]) {
            if (![requestHeaders objectForKey:@"device_id"] ) {
                NSMutableURLRequest *request = [PublicWKWebViewServices setKeyValueForRequestHeader:[mutableRequest.URL absoluteString]];
                [webView loadRequest:request];
                decisionHandler(WKNavigationActionPolicyCancel);
                return ;
            }
        }
        decisionHandler(WKNavigationActionPolicyAllow);
    }
}

参考:
https://www.jianshu.com/p/0183d978eb5c
https://www.jianshu.com/p/21b1f5a2e909
https://www.jianshu.com/p/b0ed73a61ac4
https://blog.csdn.net/yxl123546/article/details/72779017

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit...
    yahoouchen阅读 9,557评论 8 17
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,832评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,800评论 1 32
  • 通过学习,你将会学习以下几个方面的内容: **什么是WKWebView以及它和UIWebView的区别是什么 **...
    SOI阅读 14,025评论 18 42
  • 为你写一首温柔的诗歌,作为回信 每当秋天,金黄得麦浪起起伏伏 荡漾在平缓的小山坡上 夕阳隐去,暮色深沉的黄昏里 没...
    雷子是朵小白云阅读 1,703评论 0 1