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:8888b.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详解相关推荐

  1. JavaWeb Cookie详解

    代码地址如下: http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http ...

  2. ASP.NET 操作Cookie详解 增加,修改,删除

    ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...

  3. 转:Cookie详解

    没怎么坐过客户端相关的工作,所以写爬虫的时候,很多概念都很模糊,学习起来很困难.现在想攻坚一下,所以找了一下cookies相关的内容. HTTP cookies,通常又称作"cookies& ...

  4. cookie详解(含vue-cookie)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...

  5. 会话跟踪技术,Session和Cookie详解

    知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文 ...

  6. java 会话跟踪技术_JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解 ...

  7. JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操 ...

  8. linux curl h 命令,Linux curl命令http cookie详解

    Http Cookie在Http协议中是非常实用的功能.可以保留网站的一些会话信息,方便用户下次再次来到本网站时使用:如在cookie中记录用户的性别和姓氏.下次用户再次到来,即使未登录,也可以根据获 ...

  9. 会话技术之Cookie详解

    很早之前写过一篇关于Cookie和Session的文章,那是2017年的事咯,当时还是个学生,技术也菜,对知识理解的也不深.恰巧有机会重新学习Java Web,今天就再次来简单的聊一聊Cookie与S ...

最新文章

  1. php引入PHPMailer发送邮件
  2. 最新发布| Jira官宣中国区本地部署特殊政策,公布Data Center价格
  3. pandas索引和选择数据
  4. python代码编辑器排行榜-写 Python 哪个编辑器 / IDE 最好用?
  5. 调用Com+时提示找不到文件
  6. 深度学习总结:cycleGAN原理,实现图片风格切换,可以和之前的伪DL方式对比一下,pytoch实现
  7. PHP和MySQL Web开发从新手到高手,第7天-创建author管理页面
  8. android 安全 权限,[原创]Android 中的那些权限
  9. TensorFlow安装中碰到的问题汇总
  10. 离散数学计算机专业论文,【计算机专业《离散数学》教学研究】计算机专业离散数学...
  11. endnotex7 + word2016 高效管理参考文献
  12. matlab gui中断程序,MATLAB GUI的中斷程序
  13. nginx配置简单图片显示
  14. 问题 A: 买牛奶  某同学负责给班里的同学买牛奶 ,每人两瓶。输入一个整数,表示班级人数。输出牛奶瓶数
  15. Python程序员的浪漫-实现每天定时给Ta推送微信公众号消息提醒超详细教程
  16. 2021真无线耳机推荐,必须了解的真无线蓝牙耳机
  17. MAC上安装Ubantu双系统
  18. 对展开运算符和object.assign()的理解
  19. 阵列中条带(stripe)、stripe unit
  20. 基于单片机的心率体温血压系统设计(#0494)

热门文章

  1. java用scanner类_java中关于scanner类的详细介绍
  2. 信安教程第二版-第21章网络设备安全
  3. 渗透测试入门3之隐匿攻击
  4. php递归简单例子,php递归json类实例
  5. MongoDB语法学习
  6. 使用uiautomator2进行webview页面的测试
  7. [Objective-C语言教程]数据封装(27)
  8. Object-C中self和super的区别
  9. swfupload使用说明
  10. 动软代码生成器连接Oracle 11g