iOS-WKWebView携带cookie发送http请求,cookie失效

发送请求代码:

NSString *testUrl = @"http://10.22.122.7:8081/test2_action/view_index"; NSURL *url = [NSURL URLWithString:testUrl]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60]; NSString *value = [NSString stringWithFormat:@"WAP_0000E86BEBFC4514987AE63ACF9D19Dd=123",]; [request setValue:value forHTTPHeaderField:@"Cookie"]; [_webView loadRequest:request];

结果:网页内跳转,cookie失效

问题原因分析:

WKWebView在第一次加载的时候携带cookie,然后在WKWebView中产生页面跳转的时候WKWebView自动清除了cookie,导致用户需要二次登录。

解决办法:

创建webView对象的时候,把cookie放到WKWebView中,实现所有请求都携带cookie。

以下是实现代码:(这里的cookie第一次请求的时候不起作用,在h5页面内再次跳转的时候才会起作用,不明原因)

WKUserContentController* userContentController = [[WKUserContentController alloc] init];
WKUserScript * cookieScript = [[WKUserScript alloc]initWithSource: [NSString stringWithFormat:@"document.cookie = ‘WAP_COOKIE_ENABLE=1‘;document.cookie = ‘WAP_0000E86BEBFC4514987AE63ACF9D19Dd=%@‘;",user.WAP_0000E86BEBFC4514987AE63ACF9D19Dd]                            injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
[userContentController addUserScript:cookieScript];
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.userContentController = userContentController;
[configuration.userContentController addScriptMessageHandler:self name:@"Redirect"];
self.webView = [[[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration] autorelease];

注意点:

1、创建webView的时候加了cookie,一开始发送请求的时候也要加上cookie,

2、保证一开始发送请求的cookie跟这里的cookie是一致的。

时间: 2024-10-02 14:17:30

iOS-WKWebView携带cookie发送http请求,cookie失效的相关文章

JavaWeb基础 Cookie 发送和接收cookie

礼悟:    好好学习合思考,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼强身心,诚劝且行且珍惜. javaEE:7                  javaSE:1.8          JSTL:1.2.2        server:tomcat 8.5    browser:Chrome/Firefox             os:windows7 x64            ide:MyEclipse 2017 项目

Unity3D携带Header发送POST请求

1.客户端 unity 发送post请求 IEnumerator Post() { string url = "http://localhost/tp/public/api/v1/test"; //header data Dictionary<string, string> header = new Dictionary<string, string>(); header["Content-Type"] = "application

iOS网络开发基础--发送HTTP请求

一.一个HTTP请求的基本要素 1.请求URL:客户端通过哪个路径找到服务器 2.请求参数:客户端发送给服务器的数据 如登录时需要发送的用户名和密码 3.返回结果:服务器返回给客户端的数据 一般是JSON数据或者XML数据 二.基本的HTTP请求的步骤(移动客户端) 1.拼接"请求URL" + "?" + "请求参数" 请求参数的格式:参数名=参数值 多个请求参数之间用&隔开:参数名1=参数值1&参数名2=参数值2 2.发送请求

scrapy携带payload发送post请求

url_rl = "https://www.yijiupi.com/v31/Product/ListProduct" payload = '{"currentPage":1,"data":{"sonCategoryId":"%s","categoryIds":["%s"],"saleModel":-1,"sort":0,&quo

[IOS:OC]使用NSURL发送网络请求实例

#import "ViewController.h" @interface ViewController ()<NSURLConnectionDelegate,NSURLConnectionDataDelegate> @property(nonatomic,strong)NSOperationQueue *queue;//在使用conn异步连接时的队列 @end @implementation ViewController //conn 默认是异步的 使用get请求 使用代

详解 Cookie 纪要(vue.cookie,jquery.cookie简化)

今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://www.jeffjade.com/2016/10/31/115-summary-of-cookie/ 原文如下,记录到此供以后查阅并希望好文章能被更多需要的人看到   背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cookie规范定义了服务器和客户端交互信息的格式.生存期.使用范围.安全性.在JavaScript中可以通过 document.c

iOS HTTP网络请求Cookie的读取与写入(NSHTTPCookieStorage)

当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的Cookie继续去请求.同样适用于ASIHTTPRequest,AFNetworking, Webview等,Cookie常用于一些基于认证的网络请求 认识下NSHTTPCookieStorageNSHTTPCookieStorag

iOS htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)

当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的Cookie继续去请求.同样适用于ASIHTTPRequest,AFNetworking, Webview等,Cookie常用于一些基于认证的网络请求 认识下NSHTTPCookieStorageNSHTTPCookieStorag

Python3发送post请求,自动记住cookie

在做登录的post请求时,需要记住cookie,否则不能访问登录后的页面. 下面是登录的代码: #coding:utf-8import urllibimport http.cookiejar url = "http://c.highpin.cn/Users/CLogin"postdata =urllib.parse.urlencode({ "Logon_Password":"sunmin", "Logon_PostCode":