Web应用程序是使用HTTP协议传输完成的。HTTP协议是无状态的协议。当数据交换完毕以后,客户端与服务器端的连接就会关闭。当再次交换数据的时候需要重新建立新的连接。这就意味着服务器无法从连接上跟踪会话。

大家应该都有这样的经历,当你登录一个网站的时候会提醒你要不要记住账户和密码,这样下次来你就不用再次输入账号和密码了。这就是Cookie的作用,当我们再次访问的时候,方便服务器直接根据我们的Cookie直接来取上一次我们取过的东西(对于每一个Cookie服务器会对这个Cookie存储上一次我们拿过的数据,下一次对于同一个Cookie的时候,就直接取了)

什么是Cookie?

Cookie是由服务器端生成的,发送给User-Agent(一般是浏览器),这个时候服务器会告诉浏览器要设置一下Cookie,浏览器自动将Cookie以Key/Value(键值对)的方式保存在某个目录下的文本文件内,下次请求同一个网站时也会自动发送该Cookie给服务器,即添加在请求头部(但是前提时浏览器设置为启用Cookie)

Cookie就是一个小型文件(浏览器对Cookie的内存大小是有限制的,Cookie的大小一般是4K---用来记录一些信息)

Cookie具有保质期

Cookie即有永久的也含有临时的,每一个浏览器都含有自己的Cookie,每次请求的时候,都会根据domain来发送响应的Cookie,也可以通过设置expires 、max-age来设定保存日期,不设置的话默认是临时存储,即关闭浏览器就消失。

document.cookie = 'expires=时间/max-age=秒'

Cookie的安全性

Cookie在本地可以被更改文件 敏感的数据不要放在Cookie里。

如何设置 cookie?

知道了cookie的格式,cookie的属性选项,接下来我们就可以设置cookie了。首先得明确一点:cookie既可以由服务端来设置,也可以由客户端来设置。

服务端设置 cookie

不管你是请求一个资源文件(如 html/js/css/图片),还是发送一个ajax请求,服务端都会返回response。而response header中有一项叫set-cookie,是服务端专门用来设置cookie的。如下图所示,服务端返回的response header中有5个set-cookie字段,每个字段对应一个cookie(注意不能将多个cookie放在一个set-cookie字段中),set-cookie字段的值就是普通的字符串,每个cookie还设置了相关属性选项。

注意:

一个set-Cookie字段只能设置一个cookie,当你要想设置多个 cookie,需要添加同样多的set-Cookie字段。

服务端可以设置cookie 的所有选项:expires、domain、path、secure、HttpOnly

客户端设置 cookie

在网页即客户端中我们也可以通过js代码来设置cookie。如我当前打开的网址为http://dxw.st.sankuai.com/mp/,在控制台中我们执行了下面代码:

document.cookie = "name=Jonh; ";

再执行下面代码:

document.cookie="age=12; expires=Thu, 26 Feb 2116 11:50:25 GMT; domain=sankuai.com; path=/";

查看浏览器cookie 面板,如下图所示,新的cookie设置成功了,而且属性选项 domain、path、expires都变成了设定的值。

注意:

客户端可以设置cookie 的下列选项:expires、domain、path、secure(有条件:只有在https协议的网页中,客户端设置secure类型的 cookie 才能成功),但无法设置HttpOnly选项。

用 js 如何设置多个 cookie

当要设置多个cookie时, js 代码很自然地我们会这么写:

document.cookie = "name=Jonh; age=12; class=111";

但你会发现这样写只是添加了第一个cookie“name=John”,后面的所有cookie都没有添加成功。所以最简单的设置多个cookie的方法就在重复执行document.cookie = "key=name",如下:

document.cookie = "name=Jonh";

document.cookie = "age=12";

document.cookie = "class=111“,

如何修改、删除

修改 cookie

要想修改一个cookie,只需要重新赋值就行,旧的值会被新的值覆盖。但要注意一点,在设置新cookie时,path/domain这几个选项一定要旧cookie 保持一样。否则不会修改旧值,而是添加了一个新的 cookie。

删除 cookie

删除一个cookie 也挺简单,也是重新赋值,只要将这个新cookie的expires 选项设置为一个过去的时间点就行了。但同样要注意,path/domain/这几个选项一定要旧cookie 保持一样。

cookie分号后面没有值_浏览器Cookie介绍相关推荐

  1. cookie分号后面没有值_Cookie的属性(cookie的设置、获取和删除)

    每个cookie都有四个可选的属性,他们分别控制cookie的生存周期.可见性.安全性等. Cookies最初设计时,是为了CGI编程.但是,我们也可以使用Javascript脚本来操纵cookies ...

  2. python利用cookie登录百度的代码_使用 cookie 登录百度

    cookies2.txt 为存放 cookie 字符串的文件. cookie 字符串获取方式 1. 可以通过手动的方式去取,比如登录之后在 console 里面执行 document.cookie 即 ...

  3. C# 系统应用之Cookie\Session基础知识及php读取Cookie\Session

    本文主要是毕业设计"个人电脑使用记录清除软件"系列系统应用文章中关于Cookie方面的知识,主要从介绍Cookie的基础知识和PHP关于Cookie\Session两个会话管理机制 ...

  4. asp.net javascrip获取session的值_一篇文章搞定 Django Cookie 与 Session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  5. ajax获取session值_【JavaWeb】91:Cookie与Session

    今天是刘小爱自学Java的第91天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 学cookie之前,我先说一个问题: 如果我设置浏览器不保存cookie. 会发现很多网站都没法登录了. 购物 ...

  6. 如何在用例之间传递值_接口测试:A12_HttpRunner_cookie整理_01_提取指定cookie值

    A12_HttpRunner_cookie整理_01_提取指定cookie值 在 HTTP 响应中,通过响应头设置 cookies 记录用户信息以及身份凭证.用 HttpRunner 编写测试用例的时 ...

  7. 简单封装浏览器 cookie 工具类

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...

  8. Cookie中不能有空格_前端小贴士 -- 全面了解Cookie

    一.Cookie的出现 浏览器和服务器之间的通信少不了HTTP协议,但是因为HTTP协议是无状态的,所以服务器并不知道上一次浏览器做了什么样的操作,这样严重阻碍了交互式Web应用程序的实现. 针对上述 ...

  9. java修改cookie的值_Java 对 Cookie增删改查的实现示例

    Cookie属性 name:cookie的名称 value:cookie的值 maxAge:cookie的失效时间,默认为-1 值 说明 负数 浏览器关闭后立即失效 0 马上清除cookie 正数 设 ...

最新文章

  1. SharePoint 2013 开发——SharePoint Designer 2013工作流
  2. react更改路由入参_react怎么路由传参?
  3. C语言库自带的二分查找函数bsearch函数的使用示例
  4. python程序中想使用正则表达式_python中正则表达式的使用方法
  5. C语言 ,嵌入式 ,c++,数据结构 面试题目(4)
  6. 整型与布尔型的转换(信息学奥赛一本通-T1022)
  7. pwm驱动电机 为什么pwm不能太快_认识直流电机的PWM驱动控制电路
  8. LeetCode#70 Climbing Stairs
  9. 博客开篇第一篇--资深前端工程师
  10. c语言swustoj括号匹配问题,swust-oj 西南科技大学oj练习题解 150+道 - 下载 - 搜珍网...
  11. npm使用及cmd常用命令
  12. DIV布局末大作业:美食网站设计——餐饮美食-咖啡(5页) HTML5网页设计成品_学生DW静态食品网页设计_web课程设计网页制作
  13. CTGU实验6_2-创建借书存储过程
  14. 打开 mhtml 文件 显示不全_解决 Nginx autoindex 显示文件名不全的问题
  15. Cortex-M3单片机的IAP在线升级上位机和下位机
  16. Python:网络爬虫入门
  17. 【python实现网络爬虫(4)】实习僧网站信息爬取(字体反爬虫破解)
  18. t3网络计算机是空白,用友T3登录界面服务器那一行是空白的?
  19. GIS自主创新十年路(一):缘起ActiveMap
  20. Matlab 2019a

热门文章

  1. 关于一道面试题,使用C#实现字符串反转算法
  2. rocketmq 4.X 扩容思路
  3. 如履薄冰 —— Redis懒惰删除的巨大牺牲
  4. spring mvc中关于url中传递中文乱码的解决方法
  5. 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
  6. spring-注解实现入门
  7. Android Http客户端如何选择?
  8. VIM学习笔记 配置文件(vimrc)
  9. 未来的GDI:WPF技术纵览[zz]
  10. Ghost in IE6.web标准网页IE6中的幽灵。