摘要:本文章整理自阮一峰参考每日一题简述是什么什么是是服务器保存在浏览器的一小段文本信息。追踪记录和分析用户行为。注意,这里不要求协议相同。属性必须为绝对路径,默认为当前路径。属性值必须是当前发送的域名的一部分。
Cookie
本文章整理自:阮一峰Cookie
参考「每日一题」简述 Cookie 是什么
Cookie 是服务器保存在浏览器的一小段文本信息。浏览器每次向服务器发出请求,就会自动附上这段信息。
Cookie的作用Cookie 主要用来分辨两个请求是否来自同一个浏览器
用来保存一些状态信息,例如:
对话(session)管理:保存登录、购物车等需要记录的信息。
个性化:保存用户的偏好,比如网页的字体大小、背景色等等。
追踪:记录和分析用户行为。
不推荐使用Cookie作为客户端存储,原因:
它的容量很小(4KB)
缺乏数据操作接口
而且会影响性能
客户端储存应该使用 Web storage API 和 IndexedDB。
Cookie的组成Cookie 包含以下几方面的信息:
Cookie 的名字
Cookie 的值(真正的数据写在这里面)(1、2两点就是键值对 )
到期时间
所属域名(默认是当前域名)
生效的路径(默认是当前网址)
(3/4/5是cookie的属性)
Cookie的作用过程举例来说:
用户访问网址www.example.com,服务器在浏览器写入一个 Cookie。这个 Cookie
就会包含www.example.com这个域名(第4点),以及根路径/(第5点)。(这意味着,这个 Cookie 对该域名的根路径和它的所有子路径都有效。如果路径设为/forums,那么这个 Cookie 只有在访问www.example.com/forums及其子路径时才有效。)
以后,浏览器一旦访问这个路径,浏览器就会附上这段 Cookie 发送给服务器。
Cookies作用范围浏览器的同源政策规定,两个网址只要域名相同和端口相同,就可以共享 Cookie(参见《同源政策》一章)。注意,这里不要求协议相同。也就是说,http://example.com设置的 Cookie,可以被https://example.com读取
HTTP 协议中的Cookie HTTP 回应:Cookie 的生成(服务器端生成cookies)服务器如果希望在浏览器保存 Cookie,就要在 HTTP 回应的头信息里面,放置一个Set-Cookie字段.
Set-Cookie:foo=bar
上面代码会在浏览器保存一个名为foo的 Cookie,它的值为bar。
(设置的格式为:<键(名)>=<值>)
HTTP 回应可以包含多个Set-Cookie字段,即在浏览器生成多个 Cookie。下面是一个例子。
HTTP/1.0 200 OK Content-type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content]
除了 Cookie 的值,Set-Cookie字段还可以附加 Cookie 的属性。
一个Set-Cookie字段里面,可以同时包括多个属性,没有次序的要求。
下面是设置一个Cookie的例子:除了名与它的值,还包含Domain属性Secure属性和HttpPnly属性:
Set-Cookie:= ; Domain= ; Secure; HttpOnly
除了键=值来设置cookie的名字和值之外,还可以设置属性。
Expires,Max-Age用来设置cookie持续时间
Domain,Path设置发送http请求时那些域名和路径需要附带这个Cookie
Secure属性指定浏览器只有在加密协议 HTTPS 下才能发送
HttpOnly属性指定该 Cookie 无法通过 JavaScript 脚本拿到
具体用法看这里Cookie 的属性---阮一峰
HTTP 请求:Cookie 的发送(浏览器发送Cookie)浏览器向服务器发送 HTTP 请求时,每个请求都会带上相应的 Cookie。也就是说,把服务器早前保存在浏览器的这段信息,再发回服务器。这时要使用 HTTP 头信息的Cookie字段。
Cookie: foo=bar
上面代码会向服务器发送名为foo的 Cookie,值为bar。
Cookie字段可以包含多个 Cookie,使用分号(;)分隔。
Cookie: name=value; name2=value2; name3=value3
下面是一个Http请求的例子。
GET /sample_page.html HTTP/1.1 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry
服务器收到浏览器发来的 Cookie 时,有两点是无法知道的(因为这些Cookie的属性只保存在浏览器上)。
Cookie 的各种属性,比如何时过期。
哪个域名设置的 Cookie,到底是一级域名设的,还是某一个二级域名设的。
document.cookie读写当前网页的Cookie 读Cookie读取的时候,它会返回当前网页的所有 Cookie,前提是该 Cookie 不能有HTTPOnly属性。
document.cookie // "foo=bar;baz=bar"写Coookie
document.cookie属性是可写的,可以通过它为当前网站添加 Cookie。
等号两边不能有空格
document.cookie = "fontSize=14";
但是,document.cookie一次只能写入一个 Cookie,而且写入并不是覆盖,而是添加。
document.cookie = "test1=hello"; document.cookie = "test2=world"; document.cookie // test1=hello;test2=world
写入 Cookie 的时候,可以一起写入 Cookie 的属性。
document.cookie = "foo=bar; expires=Fri, 31 Dec 2020 23:59:59 GMT";
各个属性的写入注意点如下。
path属性必须为绝对路径,默认为当前路径。
domain属性值必须是当前发送 Cookie 的域名的一部分。比如,当前域名是example.com,就不能将其设为foo.com。该属性默认为当前的一级域名(不含二级域名)。
max-age属性的值为秒数。
expires属性的值为 UTC 格式,可以使用Date.prototype.toUTCString()进行日期格式转换。
document.cookie写入 Cookie 的例子如下。
document.cookie = "fontSize=14; " + "expires=" + someDate.toGMTString() + "; " + "path=/subdirectory; " + "domain=*.example.com";
Cookie 的属性一旦设置完成,就没有办法读取这些属性的值。
Cookie 的删除删除一个现存 Cookie 的唯一方法,是设置它的expires属性为一个过去的日期。
document.cookie = "fontSize=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
上面代码中,名为fontSize的 Cookie 的值为空,过期时间设为1970年1月1月零点,就等同于删除了这个 Cookie。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/97693.html
摘要:保存中文上面我们的例子保存的是英文字符,下面我们来看下保存中文字符会怎么样。出异常了中文属于字符,英文数据字符,中文占个字符或者个字符,英文占个字符。如果为,则表示删除该。的值规定为域名的隐私安全机制决定是不可跨域名的。 什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一...
摘要:追踪记录和分析用户行为。属性返回一个布尔值,表示浏览器是否打开功能不同浏览器对数量和大小的限制,是不一样的。请求的发送浏览器向服务器发送请求时,每个请求都会带上相应的。属性必须为绝对路径,默认为当前路径。属性值必须是当前发送的域名的一部分。 概述Cookie 与 HTTP 协议HTTP 回应:Cookie 的生成HTTP 请求:Cookie 的发送Cookie 的属性Expires,M...
摘要:首先先来一段总结用于本地数据存储,出现在服务器和浏览器交互的响应头部和请求头部中,受到单域名下的数量单个大小性能安全限制。子技术的出现缓解了单域名下的数量限制,关于子有一整套工具函数可以使用。 前言 本篇主要介绍Cookie技术的读书总结,但是我认为逻辑上最好会和Web Storage技术放在一起进行对比,因此后续会再总结一篇关于WEB存储的姊妹总结,敬请期待。 首先先来一段总结:Co...
摘要:首先先来一段总结用于本地数据存储,出现在服务器和浏览器交互的响应头部和请求头部中,受到单域名下的数量单个大小性能安全限制。子技术的出现缓解了单域名下的数量限制,关于子有一整套工具函数可以使用。 前言 本篇主要介绍Cookie技术的读书总结,但是我认为逻辑上最好会和Web Storage技术放在一起进行对比,因此后续会再总结一篇关于WEB存储的姊妹总结,敬请期待。 首先先来一段总结:Co...
阅读 2043·2021-11-23 09:51
阅读 2187·2021-09-29 09:34
阅读 3647·2021-09-22 15:50
阅读 3537·2021-09-22 15:23
阅读 2500·2019-08-30 15:55
阅读 680·2019-08-30 15:53
阅读 3045·2019-08-29 17:09
阅读 2598·2019-08-29 13:57