美文网首页
iOS WKWebView 添加 cookie

iOS WKWebView 添加 cookie

作者: 余音未重 | 来源:发表于2017-11-30 17:45 被阅读0次

今天遇到了一个问题,项目中需要加载web界面,使用WKWebView耗内存小、加载速度快、与JS的交互好,所以就尝试使用WKWebView,就遇到了一个问题:request请求的url并不是原生的html,而是从服务器端获取到的接口,只有在用户登录的情况下才会加载,如下图所示:

加载不出来想要的html界面,网上查了好久也大概了解到时cookie的原因,需要获取到cookie并添加到request请求中,下面是我的解决办法:

WKWebViewConfiguration* webConfiguration = [[WKWebViewConfiguration alloc] init];

WKUserContentController* contentController = [[WKUserContentController alloc] init];

WKPreferences *preferences = [WKPreferences new];

webConfiguration.preferences = preferences;

//ESWeakSelf:这是一个宏,防止MessageHandler循环引用

ESWeakSelf

[contentController addScriptMessageHandler:__weakSelf name:@"rule"];

[contentController addScriptMessageHandler:__weakSelf name:@"minimalInvasiveActivityProtocolClick"];

self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight-64) configuration:webConfiguration];

self.webView.navigationDelegate = self;

self.webView.UIDelegate = self;

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.urlString]];

/******************************获取cookies***********************************/

NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];

NSHTTPCookie* realCookie = nil;

for (NSHTTPCookie* cookie in cookies) {

//[NSObject baseURLStr] :接口地址的请求头

NSRange range = [[NSObject baseURLStr] rangeOfString:cookie.domain];

//如过找到了

if (range.location != NSNotFound) {

realCookie = cookie;

break;

}

}

//下面这个取cookie的方法,每个项目的name值可能不一样,要要断点查看:

NSString* cookieValue = [NSString stringWithFormat:@"app=%@;",realCookie.value];

[request setValue:cookieValue forHTTPHeaderField:@"Cookie"];

/******************************获取cookies***********************************/

if (self.urlString) {

[self.webView loadRequest:request];

}

else if (self.htmlString)

{

[self.webView loadHTMLString:self.htmlString baseURL:nil];

}

[self.view addSubview:self.webView];

[self.webView mas_makeConstraints:^(MASConstraintMaker *make) {

make.edges.mas_offset(UIEdgeInsetsMake(0, 0, 0, 0));

}];

以上就是我的解决办法,希望会对大家有些帮助,么么

相关文章

  • IOS WKWebView添加cookie

    在网络请求中,有一部分需要添加cookie,接下来就把为web添加cookie的方法小小列举一下,其实所有的要添加...

  • iOS WKWebView 添加 cookie

    今天遇到了一个问题,项目中需要加载web界面,使用WKWebView耗内存小、加载速度快、与JS的交互好,所以就尝...

  • iOS WKWebView添加Cookie

    网络请求添加Cookie都需要在request的时候添加 给request增加请求头 WKWebView加载请求

  • iOS WKWebView添加Cookie

    一、系统方法设置: 系统方法就不说了,百度一大推,但是听说WKWebView设置Cookie有bug。 二、第三方...

  • iOS UIWebView、WKWebView注入Cookie

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

  • iOS13 WKWebView点击不跳转,没反应。

    iOS13开始 WKWebView 去掉了cookie的自动推送功能,可以自己添加上。代码如下: if (@ava...

  • APP中的cookie

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

  • WKWebview ajax添加cookie

    wkwebview 用WKUserScript添加cookie,cookie的source里必须带上 path

  • H5遇到的常见问题

    iOS WKWebView cookie 写入慢以及易丢失 现象: 原因:WKWebView 对 NSHTTPCo...

  • Session220 Customized Loading in

    iOS11中WKWebview得到了加强,添加了三种开发者呼声比较大的功能,分别是: Manage Cookie(...

网友评论

      本文标题:iOS WKWebView 添加 cookie

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