Cookie是什么

Cookie是什么

Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,会在浏览器下次向同一服务器再发起请求时被携带井发送到服务器上。

通常,Cookie用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。Cookie技术产生源于HTTP协议在互联网上的急速发展。

Cookie曾一度用于客户端数据的存储,因当时并没有其它合适的存储办法而作为唯一的存储手段。但现在随着现代浏览器开始支持各种各样的存储方式,Cookie渐渐 被淘汰。由于服务器指定Cookie后,浏览器的每次请求都会携带CCookie数据,会带来额外的性能开销。

Cookie的存储

Cookie保存在客户端某个特定的目录下的一个扩展名为“txt" 文本文件中,并且不同站点的Cookie数据保存不同的文件中。

Cookie数据一般 都是加密后保存的。

Cookie的作用域

Domain和Path标识定义了Cookie的作用域,即Cookie应该发送给哪些URL。

  • Domain标识指定了哪些主机可以接受Cookie。

    • 如果不指定,默认为当前文档的主机(不包含子域名)。

    • 如果指定了Domain,则一般包含子域名。例如,如果设置Domain=wolongxueyuan.com,则Cookie也包含在子域名中(如developer.wolongxueyuan.com)。

  • Path标识指定了主机下的哪些路径可以接受Cookie (该URL路径必须存在于请求URL中)。以字符%x2F("/")作为路径分隔符,子路径也会被匹配。

Cookie的有效期

Max-Age和Expires标识定义了Cookie的有效期,即Cookie的生命周期。

  • 会话期Cookie

    • 会话期Cookie是最简单的C Cookie。浏览器关闭之后Cookie会被自动删除,也就是说Cookie仅在会话期内有效。会话期Cookie不需要指定过期时间( Expires )或者有效期(Max-Age)。
  • 持久性Cookie
    • 持久性Cookie可以指定一个 特定的过期时间( Expires )或有效期(Max-Age )。

Cookie的应用

  • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等)

访问与更新Cookie

创建Cookie

JavaScript可以使用document.cookie属性来访问和更新Cookie。语法结构如下所示:

document.cookie = newCookie;

newCookie是一个 键值对形式的字符串。需要注意的是,用这个方法一次只能对一个cookie置或更新

document.cookie = "name=wolongxueyuan";
document.cookie = "someCookieName=true; expires=Fhf, 31 Dec 9999 23:59:59 GMT; path=/";

读取Cookie

JavaScript可以使用document.cookie属性来访问和更Cookie。语法结构如下所示:

allCookies = document.cookie;

allCookies被赋值为一个字符串,该字符串包含所有的Cookie,每条cookie以分号分隔(即key=value键值对)。

修改Cookie

重新给要修改的cookie赋值就行,这样旧的就会被覆盖掉

删除Cookie

JavaScript删除Cookie只需要设置Expires标识为以前的时间即可。如下所示:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

当删除时不必指定Cookie的值

HTTP中的Cookie

Set-Cookie响应头

服务器使用Set-Cookie响应头部向用户代理(一般 是浏览器)发送Cookie信息。

Set-Cookie: <cookie名>=<cookie值>

服务器通过该头部告知客户端保存Cookie信息。

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry[页面内容]

Cookie请求头

对服务器发起的每一次新请求, 浏览器都会将之前保存的Cookie信息通过Cookie请求头部再发送给服务器。

GET /sample_page.html HTTP/1.1
Host:www.example.org
Caokie: yummy_cookie=choco; tasty_cookie=strawberry

[HTTP] Cookie相关推荐

  1. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  2. cookie 免密登录_python

    我们都知道 HTTP 是无状态的,用户每次打开 web 页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么服务器是怎么识别用户的呢? 这就是本文今天要讲解的内容.当服务端需要 ...

  3. 你想了解的Cookie和Session就在这~

    目录 1.会话的概念 2.保存会话的两种技术 3.Cookie 4.Session(重点) 1.会话的概念 我们知道session的意思就是会话,Cookie和Session 是两种会话技术,我们首先 ...

  4. Cookie和Session的区别与联系

    Cookie和Session Session 会话的理解 Session的作用 HTTP协议的无状态特点 Session的实现原理(重点) Session常用方法: Cookie 基本介绍 经典案例 ...

  5. java爬取验证码图片_JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取)...

    JAVA HttpClient实现页面信息抓取(获取图片验证码并传入cookie实现信息获取) 发布时间:2018-05-18 16:41, 浏览次数:632 , 标签: JAVA HttpClien ...

  6. cookie用法之一,最简单cookie操作

    一.先引用封装好的JS<script src="https://img.huiyiguanjia.com/cdnfile/public/publicfunction.js"& ...

  7. redis缓存和cookie实现Session共享

    分布式项目中要实现单点登录(SSO - Single Sign On):对于同一个客户端(例如 Chrome 浏览器),只要登录了一个子站(例如 a.com),则所有子站(b.com.c.com)都认 ...

  8. 关于cookie与本地 存储的区别的问题。

    1. cookie在浏览器和服务器间来回传递.而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存. 2. cookie数据还有路径(path)的概念,可以限 ...

  9. 不同级域名中的 Cookie 共享

    HTTP 响应头中 Set-Cookie 行未指定 domain 时则设置访问的域名 seliote.com 可以设置 seliote.com(也可以写成 .seliote.com 意思一样) 与 w ...

  10. 手动添加Cookie

    Controller设置Cookie第一种方式: 写:Response.SetCookie(new HttpCookie("mycookie"){ Value="1234 ...

最新文章

  1. 修正版 | QPS过万,Redis大量连接超时怎么解决?
  2. 宏基因组QIIME2专题讨论群
  3. chapter4 module and port
  4. adcclk最大_STM32 ADC转换时间
  5. Eigen入门之密集矩阵 10 - 矩阵的行优先及列优先存储
  6. pythonm 用法-------list实现购物车
  7. 关于mysql中 group by , order by , where, having 语句的区别与运用
  8. selenium无头浏览器
  9. Vbs 脚本编程简明教程之一
  10. 四款亲试好用的PDF编辑器推荐,看看哪款最适合你
  11. 基于统计语言模型的拼音输入法
  12. 网页实现语音对讲_通过基于WebRTC的浏览器实现语音通话的方法及系统的制作方法...
  13. PVE使用USB蓝牙直通配置
  14. 怎么设置微信公众号自动回复蓝色字体小程序链接
  15. R语言 指定列缺失值定值填充
  16. 学习总结20-04-18:包装类
  17. 【前端html】html添加背景音乐
  18. JS 编辑器动态添加select 鼠标划过显示下拉列表
  19. Linux积累 - scp 远程复制 加端口
  20. html5图片点击放大

热门文章

  1. 2014秋应用计算机,2014年秋计算机应用基础》期末试卷A(A3版).doc
  2. android 自定义横向堆积柱形图,MPAndroidChart项目实战(八)——自定义分段堆积柱状图...
  3. python字典键值可以是元组或列表吗_Python列表、元组、字典、集合的内置使用方法...
  4. endpointimpl怎么填参数_python爬虫19 | 爬虫遇到需要的登录的网站怎么办?用这3招轻松搞定!...
  5. 计算机基础优秀教案范文,《计算机基础知识与基本操作》教学课例(教学设计三等奖)...
  6. MySQL运算符ppt_mysql运算符
  7. 信安教程第二版-第22章网站安全需求分析与安全保护工程
  8. 【BZOJ3566】—概率充电器(树形+概率dp)
  9. slz-linux虚拟机的安装-VMware
  10. 【51nod 1331】狭窄的通道