美文网首页移动端技术分享
关于WKWebView的Cookie处理

关于WKWebView的Cookie处理

作者: Mr_Atom | 来源:发表于2017-10-24 15:49 被阅读0次

WKWebView的坑相信大家已经踩过很多了.之前cookie的问题已经处理过一些了.但是这次又出现了新坑.在第一次加载并且做页面内跳转时cookie丢了...好吧,下面是我找到的解决方法.

原贴:http://www.jianshu.com/p/85f24794bbea

我遇到的问题就是这个:302跳转Set-Cookie丢失

如果302跳转出现在你的第一次加载并且你使用了下面的方法设置第一次加载的Cookies,那么在302跳转时服务器Set-Cookie将不会被携带到下一次302跳转的目标请求中。

NSMutableURLRequest *request= [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https:/a.com/test1"]];

[request setValue:[NSString stringWithFormat:@"%@=%@",@"a", @"1"] forHTTPHeaderField:@"Cookie"];

比如:第一次加载https:/a.com/test1,然后加载https:/a.com/test1设置Cookie为a=1,服务器在https:/a.com/test1中Set-Cookie a=2;然后302跳转到https:/a.com/test2,这个时候会发现https:/a.com/test2中获取到的a还是1,Set-Cookie并没有成功。

解决办法

1.加载一个本地为空的html,域名指向你的第一次加载的url的域名。

//加载本地html

[self.webView loadHTMLString:@"" baseURL:[NSURL URLWithString:@"https:/a.com"]];

2.通过以下方法,在第一次加载完成后,将需要设置的Cookies设置到WKWebView中,因为是加载的本地的html以下方法会立即执行。

// 页面加载完成之后调用

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

if (isFirstLoaded) {

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];

//js函数

NSString *JSFuncString =

@"function setCookie(name,value,expires)\

{\

var oDate=new Date();\

oDate.setDate(oDate.getDate()+expires);\

document.cookie=name+'='+value+';expires='+oDate+';path=/'\

}";

//拼凑js字符串,按照自己的需求拼凑Cookie

NSMutableString *JSCookieString = JSFuncString.mutableCopy;

for (NSHTTPCookie *cookie in cookieStorage.cookies) {

if (![cookie.name isEqualToString:@"__cust"]) {

NSString *excuteJSString = [NSString stringWithFormat:@"setCookie('%@', '%@', 3);", cookie.name, cookie.value];

[JSCookieString appendString:excuteJSString];

}

}

//执行js

[webView evaluateJavaScript:JSCookieString completionHandler:^(id obj, NSError * _Nullable error) {

//加载真正的第一次Request

[self loadRealRequest];

}];

}

}

相关文章

  • 关于WKWebView的Cookie处理

    WKWebView的坑相信大家已经踩过很多了.之前cookie的问题已经处理过一些了.但是这次又出现了新坑.在第一...

  • 再会WKWebView

    有关WKWebView处理cookie问题,又多次测试,发现并不需要在 初识WKWebView那么麻烦,有更简...

  • WKWebView处理cookie问题

    问题描述 公司接入第三方H5接入,页面上需要输入用户名和密码,使用WKWebView总是记不住密码(应该是有时能记...

  • iOS WKWebView Cookie的处理

    1. 最近接到一个模块迁移的功能,就是把H5页面的某个功能模块嵌入的App中...其中涉及到一些原生和JS交互,c...

  • WKWebView对cookie的处理

    小编在网上查了很多wkwebview怎么去保存cookie,怎么保证cookie不丢失的资料,可大多发现说的不怎么...

  • WKWebView对Cookie的处理

    因为WKWebView是通过WebKit内核进行网络处理的,所以我们的NSHTTPCookieStorage里的C...

  • iOS开发-WKWebView设置cookie

    1.初始化WKWebView时设置cookie 2.WKWebView已经存在时,设置cookie

  • APP中的cookie

    wkwebview中的cookie: 1:wkwebview默认可以携带原生接口种下的cookie;iOS8以后,...

  • 疑难问题收集

    WKWebview 在重定向时 cookie 丢失 1.WKWebview 在重定向时 cookie 丢失: 1....

  • iOS UIWebView、WKWebView注入Cookie

    级别: ★☆☆☆☆标签:「iOS 」「UIWebView注入Cookie」「WKWebView注入Cookie」...

网友评论

    本文标题:关于WKWebView的Cookie处理

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