1.需求:WKWebView在访问某一个url时,url内部需要从cookie读取某一个值
2.代码:
- (void)createUI {
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
self.webV = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
[self.view addSubview:self.webV];
[self.webV mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.bottom.equalTo(self.view);
}];
//创建NSHTTPCookie实例
NSDictionary *properties = @{
NSHTTPCookieName : @"name",
NSHTTPCookieValue : @"zhangsan",
NSHTTPCookieDomain : @"域名",
NSHTTPCookiePath : @"/",
NSHTTPCookieSecure : @(YES)
};
NSHTTPCookie *myCookie = [NSHTTPCookie cookieWithProperties:properties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie: myCookie];
[self configureData];
}
- (void)configureData {
NSURL *url = [NSURL URLWithString:@"H5地址"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
[self.webV loadRequest:request];
}
3.说明
NSHTTPCookieName:表示Cookie的名称,通常用于标识客户端请求中的Cookie,也用于后续客户端和服务器交互时访问该Cookie。
NSHTTPCookieValue:表示Cookie的值,通常是服务器分配给客户端的唯一标识符,用于标识客户端的身份。
NSHTTPCookieDomain:表示Cookie的域名,可以设置为服务器的主机名或域名,也可以为其子域名。当客户端请求该域名或其子域名的网页时,Cookie便会随请求一起发送给服务器。
NSHTTPCookiePath:表示Cookie所属的路径,通常设置为服务器处理请求的路径。例如,如果某个服务器处理来自“/login”路径的请求,可以将Cookie的路径设置为“/login”,以便在后续处理该路径的请求时发送Cookie。
NSHTTPCookieSecure:表示Cookie是否采用加密传输,如果值为@(YES),则表示采用安全连接(HTTPS)传输;如果值为@(NO),则表示采用普通连接(HTTP)传输。
其中Name、Value、Domain和Path是必需的,而Secure是可选的。通过设置这些属性,在向服务器发送请求时,可以将Cookie附加在请求中发送给服务器,以便服务器识别客户端身份。
4.关于存储cookie方法的介绍
当您使用[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie: myCookie]
方法将一个NSHTTPCookie
对象添加到HTTP Cookie存储中时,该Cookie的值会被存储在设备上并发送给Web服务器,该服务器可以读取该Cookie并在必要时使用它。这是一个用于在iOS和macOS应用程序中管理Web浏览会话的核心方法,如果您的应用程序需要记录会话信息(例如登录信息),就可以使用它来存储和获取Cookie信息。
例如,当您登录到一个需要登录信息才能访问的网站时,该网站会将一个包含登录信息的cookie发送给您的设备,以便在您下一次访问该网站时自动登录,而不需要再次输入用户名和密码。如果您使用上面的setCookie:
方法将该Cookie存储到HTTP Cookie存储中,则该Cookie将被保存在设备中,并在您下一次登录时自动发送给该Web站点,从而自动登录您的帐户。
此外,可以使用同样的方式从HTTP Cookie存储中删除Cookie 信息,只需使用[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie: cookie]
方法从HTTP Cookie存储中删除相应的Cookie对象即可。需要注意的是,在使用此方法从HTTP Cookie存储中删除Cookie对象时,删除的是存储在设备上的客户端Cookie,而不是服务器上的Cookie。服务器Cookie只能在服务器端进行管理。
总之,使用[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie: myCookie]
方法将Cookie存储到HTTP Cookie存储中,可以实现方便的Web会话管理,包括登录和帐户信息,同时可以使用[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie: cookie]
方法从HTTP Cookie存储中删除Cookie。
网友评论