美文网首页
多次重定向时 WKWebview 丢失 cookie

多次重定向时 WKWebview 丢失 cookie

作者: Q妹_ | 来源:发表于2022-05-18 15:39 被阅读0次

    场景

    例如,这是一些 Web 客户端请求链:

    从开始请求,例如 https://xxxx/a
    状态码 302,重定向到第 2 步 url
    例如 https://xxxx/b
    这个请求会有一个像 token=token_1 这样的 cookie
    状态码 302 和响应 cookie(如一些请求令牌 token_1),重定向到第 3 步 url
    一些身份验证请求,例如 https://***/auth
    而iOS客户端(使用WKWebView)将从步骤2的响应中丢失cookie

    尝试了cookie 同步也无法解决
    使用以下方法也无法解决问题

    - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
        NSString * reqUrl = navigationAction.request.URL.absoluteString;
        if ([reqUrl containsString:@"重定向地址"] && !_is_loadRequest) {
          NSMutableURLRequest *request = navigationAction.request.mutableCopy;
           [request setValue:@"sid=12343" forHTTPHeaderField:@"cookie"];
           [webView loadRequest:request];
            decisionHandler(WKNavigationActionPolicyCancel);
           return;
        } 
    }
    

    最终解决方法

    - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
        NSString * reqUrl = navigationAction.request.URL.absoluteString;
        if ([reqUrl containsString:@"重定向地址"] && !_is_loadRequest) {
        //注意使用navigationAction.request.mutableCopy 依然出现cookie 丢失问题
         // NSMutableURLRequest *request = navigationAction.request.mutableCopy;
        //重新创建一个新的请求,解决我了我的问题
            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
           [webView loadRequest:request];
            decisionHandler(WKNavigationActionPolicyCancel);
           return;
        } 
    }
    

    记录一下困扰自己好几天的问题

    相关文章

      网友评论

          本文标题:多次重定向时 WKWebview 丢失 cookie

          本文链接:https://www.haomeiwen.com/subject/myxoiltx.html