关于WKWebView添加Cookie的处理以及拦截和重定向

本文介绍如何使用WKWebView在iOS应用中注入Cookie,并通过WKUserContentController实现URL请求的拦截与处理,以控制特定URL的加载行为。

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

       

//初始化添加了这个属性后,web页里点击后的请求都会有添加这个cookie,否则url请求以后便不带cookie

     WKUserContentController *userContentController = WKUserContentController.new;
           NSString * cookieSource = [NSString stringWithFormat:@"document.cookie = 'JSESSIONID=%@'", _cookie];
           WKUserScript *cookieScript = [[WKUserScript alloc] initWithSource:cookieSource injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
           [userContentController addUserScript:cookieScript];

           WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
           config.userContentController = userContentController;

//初始化WKWebView
           _webview = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];
           _webview.backgroundColor=[UIColor whiteColor];
           [self.view addSubview:_webview];
           _webview.UIDelegate = self;
           _webview.navigationDelegate = self;
           _webview.scrollView.bounces
= NO;

 

//拦截-请求新的数据前执行

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
 
    NSURL *URL = navigationAction.request.URL;
     NSString *scheme = [NSString stringWithFormat:@"%@",URL];

//判断请求的url是不是要拦截的url
       if ([self webViewCancelRequestUrl:scheme]) {

//终止请求加载
           decisionHandler(WKNavigationActionPolicyCancel);
           [_delegate WebViewStatus:0 webUrl:scheme];
           return;
       }
       decisionHandler(WKNavigationActionPolicyAllow);
}

//加载完后执行

- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{

    //修改字体大小 300%
    [ webView evaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='90%'" completionHandler:nil];

    //修改字体颜色  #9098b8
    [ webView evaluateJavaScript:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= '#000000'" completionHandler:nil];
      [_delegate WebViewStatus:1 webUrl:[NSString stringWithFormat:@"%@",webView.URL]];
   
}

 

//是否拦截
-(BOOL)webViewCancelRequestUrl:(NSString *)url{
    
    if ([url containsString:@"Hierarchy/Hierarchy"]) {
         return YES;
    }
    if ([url containsString:@"President/President"]) {
        return YES;
    }
    if ([url containsString:@"Administration/Administration"]) {
        return YES;
    }
    if ([url containsString:@"Logistics/Logistics"]) {
        return YES;
    }
    if ([url containsString:@"Personnel/Personnel"]) {
        return YES;
    }
    if ([url containsString:@"Textcontrol/Textcontrol"]) {
        return YES;
    }
    if ([url containsString:@"Train/Train"]) {
        return YES;
    }
    if ([url containsString:@"Qualityobjectives/Qualityobjectives"]) {
         return YES;
    }
    if ([url containsString:@"Market/Market"]) {
        return YES;
    }
    return NO;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值