一直以为ios的http请求这块很简单应该不支持记录,保存,或者使用cookie,可是想当然归想当然,真用的时候,真研究了一下发现还真强大。经过一番的研究简单说一下我的理解:当你访问一个网站时,不管你愿意或者不愿意,NSURLRequest都会帮你主动记录下来你访问的站点设置的cookie,而且很负责任的,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的cookie继续去请求。这规律同样适用于ASIHTTPRequest。所以当你做一些基于认证的网络请求时,cookie不失为一个完美的解决方案。
那么怎么查看cookie呢?很简单:
1 2 3 4
|
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (NSHTTPCookie *cookie in [cookieJar cookies]) { NSLog(@"%@", cookie); }
|
这样就列出了所有已保存的cookie,如果当前为空怎么办呢?随便请求一个url喽。
1 2 3 4 5 6 7 8 9 10 11 12
|
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://blog.cnrainbird.com"] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:3]; [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (NSHTTPCookie *cookie in [cookieJar cookies]) { NSLog(@"%@", cookie); }
|
是不是得到了类似:
1
|
<NSHTTPCookie version:0 name:"PHPSESSID" value:"evf5rcboo8th1dnl53fs4ukmt2" expiresDate:(null) created:2012-03-13 14:28:13 +0000 (3.53342e+08) sessionOnly:TRUE domain:"blog.cnrainbird.com" path:"/" isSecure:FALSE>
|
的东东?这就是cookie啦
怎么清空cookie呢?
1 2 3 4 5
|
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *_tmpArray = [NSArray arrayWithArray:[cookieJar cookies]]; for (id obj in _tmpArray) { [cookieJar deleteCookie:obj]; }
|
这样cookie就消失的一干二净了。
会查看cookie了,也会清空cookie了,怎么设置指定的cookie呢?
1 2 3 4 5 6 7 8 9 10
|
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary]; [cookieProperties setObject:@"username" forKey:NSHTTPCookieName]; [cookieProperties setObject:@"rainbird" forKey:NSHTTPCookieValue]; [cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieDomain]; [cookieProperties setObject:@"cnrainbird.com" forKey:NSHTTPCookieOriginURL]; [cookieProperties setObject:@"/" forKey:NSHTTPCookiePath]; [cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion]; NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties]; [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
|
这样就可以了。输入一下,是不是得到了下面这样的结果:
1
|
<NSHTTPCookie version:0 name:"username" value:"rainbird" expiresDate:(null) created:2012-03-13 14:36:53 +0000 (3.53342e+08) sessionOnly:TRUE domain:"cnrainbird.com" path:"/" isSecure:FALSE>
|
其实ios的cookie就这么简单。如果mac也支持这么干的话,那以后写点登陆的脚本不是简单多了:)
分享到:
相关推荐
IOS 网络请求中设置cookie 1. ASIHTTPRequest ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目。让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP ...
vue-resource不再维护之后,我也用起了axios,但是死活无法设置服务器发送过来的cookie 后来查询文档发现,这个是要单独配置的。 // `withCredentials` indicates whether or not cross-site Access-Control ...
一、何为Cookie Cookie是网站为了便是终端身份,保存在终端本地的用户凭证信息。...iOS中进行HTTP网络请求Cookie管理主要由两个类负责,一个类是NSHTTPCookieStorage类,一个是NSHTTPCookie类。 1.NSHTTPCookieSt
l 支持上传或下载队列,并且可获取队列的进度信息 l 支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)中 l 支持Cookie l 当应用(iOS 4+...
检查发现是vue项目中使用axios发送ajax请求导致的。查看文档得知axios默认是不让ajax请求头部携带cookie的,因此,在main.js中设置如下: import axios from 'axios' axios.defaults.withCredentials=true;//让ajax...
包括NSSession系统自己管理cookie、自己手动管理cookie;AFNetworking自己手动管理cookie;ASIHTTPRequest自己手动管理cookie。
一站式解决WKWebView支持离线包,Ajax / Fetch请求和Cookie同步的问题(基于Ajax Hook,Fetch Hook和Cookie Hook) KKJSBridge支持的功能 JSBrdige相关 基于MessageHandler建造通信层 支持初期的管理 支持模块共享上...
我本地使用dev配置开发的时候 请求可以带上cookie信息 打包出来部署在服务器上 请求就没带上cookie信息。 然后自己慢慢排查,联合后端同事,排查这个cookie问题,前端也配置了 axios.defaults.withCredentials = ...
该插件将在发出第一个http请求之前将cookie推送到webview中,因此外部站点请求会将cookie包含在第一个请求中。细节安卓Cookie将存储在私有.txt文件中。的iOS iOS上的cookie可能不需要此插件。 从非常基本的测试中...
•基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 Node.js 中使用 •vue2.0之后,就不再对 vue-resource 更新,而是推荐使用 axios,本项目也是使用 axios •功能特性 •在浏览器中发送 XMLHttpRequests 请求 ...
1、第一次进入应用,登录获取Cookie,此时如果用到的是AFN去获取接口数据,Cookie已经写入了,所以无需处理,每次请求的时候,会自动将该cookie传给后台去验证 2、将Cookie缓存到本地: NSData *cookiesData = ...
取出需要同步的url (登录请求中返回的重定向地址) BESTHttpItem *httpItem = [BESTHttpHelper sharedHelper].curHttpItem; NSString *url = [NSString stringWithFormat:@%@/#/login, httpItem.frontend_addr]; // ...
其实也就是这些东西:**页面尺寸问题、JS交互、请求拦截、cookie带不上的问题。**所以有时想要迁移还得解决这些问题,所以还是很烦的,所以一一解决喽。 页面尺寸的问题 我们知道有些网页在UIWebView上显示好好地...
走登录的接口都会返回一个token值,然后存起来方便之后调接口的时候给后台传过去,传给后台的方式有两种:(具体使用哪种需要和后台商量) 1、放在请求头中 2、放在接口的参数中 1、放在请求头中 下面代码是从本地...
一个客户端为suno使用ai音乐发生器 SunoGenerator-main 【预览】 登录suno ai android和ios 使用在应用程序的webview登录到suno ai,将读取令牌并保存 ...在请求头中查找cookie 复制cookie字符串到输入框
使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用...
一、Cookie适配 1.现状 WKWebView适配中最麻烦的就是cookie同步问题 WKWebView采用了独立存储控件...可以直接使用WKHTTPCookieStore遍历方式设值,可以在创建wkwebview时候就同步也可以是请求时候 // iOS11同步 HTT
在iOS7之后,NSURLSession作为系统推荐使用的HTTP请求框架,在进行前台请求的情况下,NSURLSession与NSURLConnection并无太大差异,对于后台的请求,NSURLSession更加灵活的优势就将展现无遗。 1.NSURLSession集合的...
Dio是一个强大易用的dart http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载……. Flutter json数据解析是使用了json_serializable package包。它是一个自动化源代码生成器,...