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

       

//初始化添加了这个属性后,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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的基于 Flask 框架实现的示例代码: ```python from flask import Flask, request, redirect, url_for, make_response app = Flask(__name__) @app.route('/') def index(): # 检查 cookie 中是否有 username,如果有则显示欢迎信息,否则跳转到登录页面 username = request.cookies.get('username') if username: return f'欢迎回来,{username}!' else: return redirect(url_for('login')) @app.route('/login') def login(): # 渲染登录页面模板 return ''' <form method="post"> <label>姓名:<input type="text" name="username"></label> <br> <input type="submit" value="登录"> </form> ''' @app.route('/login', methods=['POST']) def do_login(): # 获取表单中提交的姓名,并将其保存到 cookie 中 username = request.form['username'] response = make_response(redirect(url_for('index'))) response.set_cookie('username', username) return response if __name__ == '__main__': app.run() ``` 在上面的示例中,我们首先定义了一个 `/` 路由来显示首页。在首页中,我们通过 `request.cookies.get('username')` 来检查 cookie 中是否保存了用户名。如果保存了,就显示欢迎信息;否则就跳转到登录页面。 接着,我们定义了一个 `/login` 路由来显示登录页面。在登录页面中,我们渲染了一个简单的表单,其中包含一个文本框用于输入姓名。 当用户提交表单时,我们定义了一个 `do_login` 视图函数来处理登录请求。在该函数中,我们通过 `request.form['username']` 获取表单中提交的姓名,并使用 `make_response` 函数创建一个响应对象。然后,我们将响应对象定向到首页,并使用 `response.set_cookie` 方法将用户名保存到 cookie 中。最后,我们返回响应对象。 需要注意的是,在实际应用中,我们需要对用户输入的数据进行验证和清理,以避免安全漏洞和错误。此外,我们也可以使用 Flask-Login 等扩展库来处理用户认证和会话管理等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值