什么是cookie?
cookie最简单的介绍就是服务器返回的一个字符串信息,只不过我们每次请求都需要把它发送给服务器。以AFN和android-async-http为例子,默认都会把cookie自动保存并且下次发送请求的时候将cookie提交给服务器。

什么时候会提交cookie到服务器?
这个问题需要知道cookie的作用域,cookie有效的作用域为当前文件目录以及子目录。例如:

http://www.xxx.com/love
//如果此请求返回了cookie,并且path是/love
那么在程序的生命期间,通过AFN和android-async-http访问所有的/love目录以及/love/xxx的子目录的时候,框架会自动将cookie提交到服务器。
如果发起的请求不是/love目录本身或者其子目录,那么框架就不会将cookie提交到服务器。如果这个时候需要我们访问http://www.xxx.com/person接口的时候也带上之前返回的cookie,该怎么办?

返回的cookie存在哪里?
最简单的办法就是自己做cookie的存储和发送,服务器返回的cookie会存储在response 的Header里面,例如:

HTTP response Header:
{
“Content-Type” = “text/html;charset=UTF-8”;
Date = “Thu, 29 Jun 2017 08:50:18 GMT”;
Server = “Apache-Coyote/1.1”;
“Set-Cookie” = “token=a27c5779-3718-4716-bbfa-6a51407c6d70”;
“Transfer-Encoding” = Identity;
}
其中”Set-Cookie”是response的Header中默认用来存储cookie的字段(当然你可以另外起其它名字,但是通用的规范还是这个字符串)

提交给服务器的cookie存在哪里?
和response的Header一样,request的Header中也有一个字段用来存储cookie字符串,这个字段默认是cookie,例如:

HTTP request Header:
{
Cookie = token=c66fbbc7-d799-426e-b065-d23226833dda;
Content-Type = application/x-www-form-urlencoded; charset=utf-8;
Device-OS = 10.3;
version = 1.0.57;
User-Agent = XProduct/1.0.57 (iPhone; iOS 10.3; Scale/2.00);
Device-Name = x86_64;
Accept-Language = zh-Hans-US;q=1, en;q=0.9;
}
具体怎么做?
现在知道了cookie是什么,从哪来,往哪去,那么事情就简单了,所以问题的最后变成了:如何获取response Header中的键值对以及如何设置request Header?
当然,不管是iOS还是Android都有提供相应的HTTPCookie框架,其次其本质无非就是从response Header中的”Set-Cookie”获取字符串,然后将指定的cookie存储在requset的Header中,例如:

//获取cookie
NSHTTPURLResponse res = (NSHTTPURLResponse )response;
//fields的输出结果就是上面的response header的内容
NSDictionary *fields = [res allHeaderFields];
NSLog(@”fields = %@”, [fields description]);
NSArray

cookie从哪来,存在哪,往哪去!相关推荐

  1. session与cookie的区别

    https://blog.csdn.net/chen13333336677/article/details/100939030 cookie的工作原理: (1)浏览器端第一次发送请求到服务器端 (2) ...

  2. reduce 轻松将cookie转化为对象

    在登录到的时候我们需要将cookie传回给服务器,通常需要我们去取到cookie,我们取cookie的时候,cookie是一个字符串形式 这种字符串形式的cookie如果能用key/value形式的对 ...

  3. Cookie、Session、Token那点事儿

    前言:新公司项目中使用到了Cookie,在各大Android技术讨论群向前辈们取经讨论这cookie.session.token这仨哥们的时候,很多开发者说法不一各抒已见,所以是时候回顾下http基础 ...

  4. 介绍一个好用的Chrome扩展,能高效管理cookie

    程序员特别是前端开发人员,在开发测试时需要经常和cookie打交道. 大家平时是怎么清除cookie的呢?我一般是f12打开Chrome开发者工具,然后在Application标签页->Cook ...

  5. 第八十五期:一文彻底搞懂cookie和session

    在Web发展史中,我们知道浏览器与服务器间采用的是 http协议,而这种协议是无状态的,所以这就导致了服务器无法知道是谁在浏览网页,所以为了解决这一问题,先后出现了四种技术,分别是隐藏表单域,URL重 ...

  6. python人人语音爬虫(登陆尚未完成,需要使用先登录在查cookie中的t)

    2019独角兽企业重金招聘Python工程师标准>>> import urllib, urllib2, cookielib,re,jsondef LoginRenren(url,t_ ...

  7. apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 第一时间与你相约 每日英文 Promise yourself to be so strong that nothing can ...

  8. 一问带你区分清楚Authentication,Authorization以及Cookie、Session、Token

    很多人可能对权限认证领域一些常见的概念都不是特别了解,所以写了篇文章专门介绍一下这些概念. 1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 这是一个 ...

  9. Laravel核心解读--Cookie源码分析

    Laravel Cookie源码分析 使用Cookie的方法 为了安全起见,Laravel 框架创建的所有 Cookie 都经过加密并使用一个认证码进行签名,这意味着如果客户端修改了它们则需要对其进行 ...

  10. Java会话技术之 —— cookie与session

    前言 说到cookie与session,想必大家都不陌生,写过单机模式下的登录业务逻辑的应该多少都会接触到cookie与session,对于cookie和session,很多同学第一反应就是cooki ...

最新文章

  1. 回归方程的拟合优度检验_计量经济学第四讲(多元线性回归模型:基本假定,参数估计,统计检验)...
  2. Django路由与视图
  3. 文本挖掘预处理:向量化与Hash Trick
  4. HTML学习笔记06-连接
  5. NodeJs实现下载Excel文件
  6. SpringBoot 小技巧
  7. 【LeetCode】 sort list 单清单归并
  8. Ext JS 4倒计时:图形和图表
  9. 吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面
  10. mysql 协议还原_mysql备份还原方案xtrabackup
  11. Atitit api design Usability simple 易用性之简单化设计 目录 1. 理论原则 2 1.1. 概念简单 2 1.2. 切换到了“write less, do more
  12. STlink下载程序步骤
  13. Mininet-wifi安装和简单使用
  14. MYSQL中出现 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction的问题解决
  15. 【源码】update-notifier 检测 npm 包是否更新~
  16. WPS工具栏都是灰色不能编辑解决方法分享
  17. 【python PDF解析】python 读取PDF文件内容
  18. python PIL增强或降低图像对比度
  19. matlab 调整矩阵形状,在MATLAB中调整3D矩阵(图像)的大小
  20. leaflet清除图层

热门文章

  1. 客户端负载均衡与服务端负载均衡对比
  2. PCB设计中的邮票孔封装如何制作?
  3. 视觉/音质/佩戴体验大提升,Rokid Max产品解析
  4. AlarmManager 定时任务详解
  5. 百度PaddlePaddle框架简易使用教程
  6. 被裁第26天,已经面了32家公司,基本都是一轮游!29岁一事无成,真该好好反思一下!...
  7. 数据结构-迪杰斯特拉,佛洛依德(两顶点之间可到达的最短距离)
  8. 脚手架工程发布与使用
  9. Source insight 工具安装及使用方法
  10. 【开发工具集】TCPView——TCP和UDP连接状态查看工具