浏览器cookie详解

码途幽影
• 阅读 37550

为什么会有cookie

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

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

什么是Cookie

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),(服务器告诉浏览器设置一下cookie),浏览器自动会将Cookiekey/value保存到某个目录下的文本文件内,下次请求同一网站时也会自动发送该Cookie给服务器,即添加在请求头部(前提是浏览器设置为启用cookie)。
Cookie就是一个小型文件(浏览器对cookie的内存大小是有限制的-------用来记录一些信息)

Cookie 的特点

Cookie 具有保质期

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

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

满足同源策略

虽然网站images.google.com与网站www.google.com同属于Google,但是域名不一样,二者同样不能互相操作彼此的Cookie。而且path也必须一样才能相互访问彼此的cookie,需要注意不同浏览器对path访问规定不一样,对于chrome,path必须为当前目录,设置为其他目录无效,只能当前页面只能访问当前目录及其以上的cookie

Cookie内存大小受限制

Cookie有个数和大小的限制,大小一般是4k

浏览器cookie详解

Cookie的安全性

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

Cookies的使用

Cookie实际上主要是web服务器开发人员设置的,前端开发人员较少使用cookie,但是也会使用,比如设置登录也页面的账号信息。
我们打开浏览器控制台,对于chrome,切换到Application,在左边的Storage下面可以看到cookie项,点开就能看到当前有哪些cookie,例如下面

浏览器cookie详解

可以看到每一行就是一个cookie,里面含有它的值以及它的相关信息,待会将详细介绍每一个属性的含义。先来看一下怎么设置Cookie

document.cookie='name=xiaoming;expires='+oDate

上面就简单的设置了一项Cookie,每一个属性使用';'隔开,并且一次不能设置多个Cookie,一次只能设置一个,后面的也不会覆盖前面的Cookie,只会拼接到当前Cookie的字符串后面。具体使用方法如下。

  • 通过document.cookie 设置cookie

    • 格式:名字=值(document.cookie = 'age =18;max-age=1000')
    • 不会覆盖(注意设置cookie的时候。不能一次设置多条cookie只能一次设置一条cookie的信息,如果后面设置了前面的一样的字段,如果同域,同path,那么后面会覆盖前面的,否者新增一条cookie。设置到path之后,该cookie只能被该path及其以下的目录获取,比如我设置path=/web,那么当我在/这个,目录下的时候不能访问到我设置到/webcookie,而我在/web/xxx这个目录下可以访问得到)
    • 过期时间:expires=时间/max-age=秒(不设置的话默认是临时存储)
  • 读取cookie(注意一般只有当我们含有http请求的时候设置cookie才有效,不同浏览器情况也不一样,比如ie下就可以直接设置),通过字符串分割。
  • 删除cookie:已经过期(即使设置日期,保证日期小于当前日期)
点赞
收藏
评论区
推荐文章
灯灯灯灯 灯灯灯灯
4年前
一篇文带你了解什么是一片Cookie走天下
概念Cookie是服务端发送到用户浏览器并且保存到本地的一小块数据,它会在浏览器下次向同一服务器发起请求时,被携带到服务器上。为什么有cookie因为HTTP协议是无状态的(HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。),即服务器不知道用户上一次做了什么,
Stella981 Stella981
4年前
C#socket编程之实现一个简单的TCP通信
TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。!(https://oscimg.oschina.net/oscnet/8c6341137d491d24e31
Stella981 Stella981
4年前
Django用户认证
COOKIE与SESSION概念cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这
Wesley13 Wesley13
4年前
QT TCP网络编程
首先介绍一下TCP:(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。相比而言UDP,就是开放式、无连接、不可靠的传输层通信协议。下面,我一次进行客户端和服务器端的QT实现。我的开发环境是:QTCreator5.7。!oneservertwo
Wesley13 Wesley13
4年前
HTTP教程2
客户端和服务器端一旦握手协商成功接建立连接,端点之间可以基于HTTP/2协议传递交换帧数据了。一。帧通用格式下图为HTTP/2帧通用格式:帧头负载的比特位通用结构:|Length(24)
Stella981 Stella981
4年前
Django_初识
HTTP协议超文本传输协议(应用层的,基于tcp\ip协议的)特点:无状态,无连接(短连接)请求消息格式:请求行\请求头部\空行\请求数据请求行:GET路径HTTP/1.1响应消息格式:响应行\响应头部\空行\响应数据响应行:HTTP/1.1状态码状态
Wesley13 Wesley13
4年前
http协议请求响应详解
http协议请求响应详解一、http协议简介HTTP是HyperTextTransferProtocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。二、HTTP1.0的基本运行方式1、基于HTTP协议(https://www.osc
Wesley13 Wesley13
4年前
TCP三次握手和四次挥手
TCP建立连接为什么是三次握手,而不是两次或四次?TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。举个日常例子,打电话时我们对话如下:对应为客户端与服务器之间的通信:!(https://oscimg.oschina.net/oscnet
3A网络 3A网络
3年前
一文读懂浏览器存储与缓存机制
一文读懂浏览器存储与缓存机制浏览器存储CookieCookie是HTTP协议的一种无状态协议。当请求服务器时,HTTP请求都需要携带Cookie,用来验证用户身份。Cookie由服务端生成,存储在客户端,用来维持状态。通常Cookie由以下值构成:名称(name)值(value)域(Domain)值(value)路径(Path)
浅说TCP状态机制
TCP(TransmissionControlProtocol)是一种面向连接的、可靠的传输协议,常用于互联网中应用层的数据传输。在协议栈中,TCP处于传输层,负责数据的分段、传输和重组等工作,同时采用状态机制来维护连接的状态。下面我们就来详细介绍一下TCP协议栈链接跟踪的工作原理。
quic协议中Connection ID的协商机制
quic协议是基于UDP的应用层可靠协议。由于UDP本身是无连接的服务,因此quic数据包的连接ID(connectionid)用于确定该数据包属于哪个quic连接。长包头包含两个连接ID:目标连接ID(DCIDDestinationConnectionID)和目标连接ID(SCIDSourceConnectionID)。
码途幽影
码途幽影
Lv1
共看明月应垂泪,一夜乡心五处同。
文章
3
粉丝
0
获赞
0