cookie从哪来,存在哪,往哪去!
什么是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从哪来,存在哪,往哪去!相关推荐
- session与cookie的区别
https://blog.csdn.net/chen13333336677/article/details/100939030 cookie的工作原理: (1)浏览器端第一次发送请求到服务器端 (2) ...
- reduce 轻松将cookie转化为对象
在登录到的时候我们需要将cookie传回给服务器,通常需要我们去取到cookie,我们取cookie的时候,cookie是一个字符串形式 这种字符串形式的cookie如果能用key/value形式的对 ...
- Cookie、Session、Token那点事儿
前言:新公司项目中使用到了Cookie,在各大Android技术讨论群向前辈们取经讨论这cookie.session.token这仨哥们的时候,很多开发者说法不一各抒已见,所以是时候回顾下http基础 ...
- 介绍一个好用的Chrome扩展,能高效管理cookie
程序员特别是前端开发人员,在开发测试时需要经常和cookie打交道. 大家平时是怎么清除cookie的呢?我一般是f12打开Chrome开发者工具,然后在Application标签页->Cook ...
- 第八十五期:一文彻底搞懂cookie和session
在Web发展史中,我们知道浏览器与服务器间采用的是 http协议,而这种协议是无状态的,所以这就导致了服务器无法知道是谁在浏览网页,所以为了解决这一问题,先后出现了四种技术,分别是隐藏表单域,URL重 ...
- python人人语音爬虫(登陆尚未完成,需要使用先登录在查cookie中的t)
2019独角兽企业重金招聘Python工程师标准>>> import urllib, urllib2, cookielib,re,jsondef LoginRenren(url,t_ ...
- apache 设置session超时时间_深入分析 Session 和 Cookie,看这篇就对了
点击上方 "程序员小乐"关注, 星标或置顶一起成长 第一时间与你相约 每日英文 Promise yourself to be so strong that nothing can ...
- 一问带你区分清楚Authentication,Authorization以及Cookie、Session、Token
很多人可能对权限认证领域一些常见的概念都不是特别了解,所以写了篇文章专门介绍一下这些概念. 1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 这是一个 ...
- Laravel核心解读--Cookie源码分析
Laravel Cookie源码分析 使用Cookie的方法 为了安全起见,Laravel 框架创建的所有 Cookie 都经过加密并使用一个认证码进行签名,这意味着如果客户端修改了它们则需要对其进行 ...
- Java会话技术之 —— cookie与session
前言 说到cookie与session,想必大家都不陌生,写过单机模式下的登录业务逻辑的应该多少都会接触到cookie与session,对于cookie和session,很多同学第一反应就是cooki ...
最新文章
- 回归方程的拟合优度检验_计量经济学第四讲(多元线性回归模型:基本假定,参数估计,统计检验)...
- Django路由与视图
- 文本挖掘预处理:向量化与Hash Trick
- HTML学习笔记06-连接
- NodeJs实现下载Excel文件
- SpringBoot 小技巧
- 【LeetCode】 sort list 单清单归并
- Ext JS 4倒计时:图形和图表
- 吴恩达深度学习笔记 course 2 1.1~1.14 深度学习的实用层面
- mysql 协议还原_mysql备份还原方案xtrabackup
- Atitit api design Usability simple 易用性之简单化设计 目录 1. 理论原则	2 1.1. 概念简单	2 1.2. 切换到了“write less, do more
- STlink下载程序步骤
- Mininet-wifi安装和简单使用
- MYSQL中出现 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction的问题解决
- 【源码】update-notifier 检测 npm 包是否更新~
- WPS工具栏都是灰色不能编辑解决方法分享
- 【python PDF解析】python 读取PDF文件内容
- python PIL增强或降低图像对比度
- matlab 调整矩阵形状,在MATLAB中调整3D矩阵(图像)的大小
- leaflet清除图层