HTTP Cookie详解
HTTP Cookie详解
Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。
HTTP请求+cookie的交互流程
如果步骤5携带的是过期的cookie或者是错误的cookie,那么将认证失败,返回至要求身份认证页面。
cookie的属性
const http = require("http");
const fs = require("fs");http.createServer(function (request, response) {console.log("request come", request.url);const host = request.headers.host;if (request.url === "/") {const html = fs.readFileSync("test.html", "utf8");if (host === "test.com:8888") {response.writeHead(200, {"Content-Type": "text/html","Set-Cookie": ["id=123; max-age=2", "abc=456; domain=test.com:8888"],});}response.end(html);}}).listen(8888);console.log("服务器开启了 - 8888");
一般cookie所具有的属性,包括:
Domain:域,表示当前cookie所属于哪个域或子域下面。
对于服务器返回的Set-Cookie中,如果没有指定Domain的值,那么其Domain的值是默认为当前所提交的http的请求所对应的主域名的。比如访问 test.com:8888
,返回一个cookie,没有指名domain值,那么其为值为默认的 test.com:8888
。
通过以上代码设置了主域名 test.com:8888
后通过浏览器访问 a.test.com:8888
、b.test.com:8888
等都是一样的,都会在请求头设置Cookie。
Path:表示cookie的所属路径。
Expire time/Max-age:表示了cookie的有效期。expire的值,是一个时间,过了这个时间,该cookie就失效了。或者是用max-age指定当前cookie是在多长时间之后而失效。如果服务器返回的一个cookie,没有指定其expire time,那么表明此cookie有效期只是当前的session,即是session cookie,当前session会话结束后,就过期了。对应的,当关闭(浏览器中)该页面的时候,此cookie就应该被浏览器所删除了。
secure:表示该cookie只能用https传输。一般用于包含认证信息的cookie,要求传输此cookie的时候,必须用https传输。
httponly:表示此cookie必须用于http或https传输。这意味着,浏览器脚本,比如javascript中,是不允许访问操作此cookie的。
服务器发送cookie给客户端
从服务器端,发送cookie给客户端,是对应的Set-Cookie。包括了对应的cookie的名称,值,以及各个属性。
Set-Cookie: lu=Rg3vHJZnehYLjVg7qi3bZjzg; Expires=Tue, 15 Jan 2013 21:47:38 GMT; Path=/; Domain=.169it.com; HttpOnlySet-Cookie: made_write_conn=1295214458; Path=/; Domain=.169it.comSet-Cookie: reg_fb_gate=deleted; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/; Domain=.169it.com; HttpOnly
从客户端把cookie发送到服务器
从客户端发送cookie给服务器的时候,是不发送cookie的各个属性的,而只是发送对应的名称和值。
GET /spec.html HTTP/1.1 Host: www.example.org Cookie: name=value; name2=value2 Accept: */*
关于修改,设置cookie
除了服务器发送给客户端(浏览器)的时候,通过Set-Cookie,创建或更新对应的cookie之外,还可以通过浏览器内置的一些脚本,比如javascript,去设置对应的cookie,对应实现是操作js中的document.cookie。
Cookie的缺陷
- cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
- 由于在HTTP请求中的cookie是明文传递的,所以安全性成问题。(除非用HTTPS)
Cookie的缺陷
- cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
- 由于在HTTP请求中的cookie是明文传递的,所以安全性成问题。(除非用HTTPS)
- Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。
HTTP Cookie详解相关推荐
- JavaWeb Cookie详解
代码地址如下: http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http ...
- ASP.NET 操作Cookie详解 增加,修改,删除
ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...
- 转:Cookie详解
没怎么坐过客户端相关的工作,所以写爬虫的时候,很多概念都很模糊,学习起来很困难.现在想攻坚一下,所以找了一下cookies相关的内容. HTTP cookies,通常又称作"cookies& ...
- cookie详解(含vue-cookie)
今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...
- 会话跟踪技术,Session和Cookie详解
知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文 ...
- java 会话跟踪技术_JavaEE基础(04):会话跟踪技术,Session和Cookie详解
一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解 ...
- JavaEE基础(04):会话跟踪技术,Session和Cookie详解
本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操 ...
- linux curl h 命令,Linux curl命令http cookie详解
Http Cookie在Http协议中是非常实用的功能.可以保留网站的一些会话信息,方便用户下次再次来到本网站时使用:如在cookie中记录用户的性别和姓氏.下次用户再次到来,即使未登录,也可以根据获 ...
- 会话技术之Cookie详解
很早之前写过一篇关于Cookie和Session的文章,那是2017年的事咯,当时还是个学生,技术也菜,对知识理解的也不深.恰巧有机会重新学习Java Web,今天就再次来简单的聊一聊Cookie与S ...
最新文章
- php引入PHPMailer发送邮件
- 最新发布| Jira官宣中国区本地部署特殊政策,公布Data Center价格
- pandas索引和选择数据
- python代码编辑器排行榜-写 Python 哪个编辑器 / IDE 最好用?
- 调用Com+时提示找不到文件
- 深度学习总结:cycleGAN原理,实现图片风格切换,可以和之前的伪DL方式对比一下,pytoch实现
- PHP和MySQL Web开发从新手到高手,第7天-创建author管理页面
- android 安全 权限,[原创]Android 中的那些权限
- TensorFlow安装中碰到的问题汇总
- 离散数学计算机专业论文,【计算机专业《离散数学》教学研究】计算机专业离散数学...
- endnotex7 + word2016 高效管理参考文献
- matlab gui中断程序,MATLAB GUI的中斷程序
- nginx配置简单图片显示
- 问题 A: 买牛奶 某同学负责给班里的同学买牛奶 ,每人两瓶。输入一个整数,表示班级人数。输出牛奶瓶数
- Python程序员的浪漫-实现每天定时给Ta推送微信公众号消息提醒超详细教程
- 2021真无线耳机推荐,必须了解的真无线蓝牙耳机
- MAC上安装Ubantu双系统
- 对展开运算符和object.assign()的理解
- 阵列中条带(stripe)、stripe unit
- 基于单片机的心率体温血压系统设计(#0494)