博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
http协议——cookie详解
阅读量:5209 次
发布时间:2019-06-14

本文共 1442 字,大约阅读时间需要 4 分钟。

http是无状态的,所以引入了cookie来管理服务器与客户端之间的状态

与cookie相关的http首部字段有:

1.Set-Cookie:它一个响应首部字段,从服务器发送到客户端,当服务器想开始通过cookie进行状态管理,它就会向客户端发送Set-Cookie字段。

2.Cookie:它是一个请求首部字段,从客户端发送到服务器

cookie是保存在客户端的,cookie是绑定在特定域名下的(即:有效域名),当向cookie的有效域名发送请求时,都会带上这个cookie。

Set-Cookie字段的属性

1.NAME=VALUE:指定cookie的名称和值,名称大小写不敏感,值必须经过URL编码。

2.domain=域名:cookie的有效域名,所有向该域发送的请求中都会包括这个cookie信息,这个值可以包含子域(如:www.baidu.com,那么这个cookie的有效域就是www.baidu.com),也可以不包含子域(如:.baidu.com,那么这个cookie对所有的baidu.com的子域都有效),如果没有指定这个值,它的默认值为设置cookie的那个域。正是因为这一限制,cookie是不能跨域的(www.qq.com不能访问到www.baidu.com下的cookie)

3.path=路径:用于指定向域中的哪个路径发送请求时,应该带上这个cookie,如果不指定,默认为当前目录及其子目录有效。例如,你可以指定cookie只有从www.baidu.com/one/中才能访问,那么www.baidu.com的页面就不能发送cookie

4.expires=Date:cookie的有效时间(即:何时应该停止向服务端发送这个cookie),默认情况下浏览器会话结束就会删除所有的cookie,不过可以自己设置cookie的有效时间。如果将cookie的有效时间设置为一个过去的时间,那么这个cookie会立即被删除

5.Secure:仅在HTTPS安全通信时才会发送cookie

6.HttpOnly:该cookie不能被脚本访问

例子   Set-Cookie:myCookie=123;domain=www.baidu.com;path=/one/;expires=Mon,22-Jan-07 07:10:24 GMT;Secure;HttpOnly

补充:一旦Cookie从服务器发送到客户端,服务器就不能显示的删除Cookie,但是可以覆盖已经过期的Cookie,通过这种方式实现对客户端cookie的删除

Cookie字段

cookie字段中只包含名-值队,如果有多个名-值队就以逗号分隔

Javascript中的Cookie

在js中可以通过document.cookie访问cookie,这个属性会返回当前页面可用的(cookie的域,路径,失效时间,安全设置)所有cookie的字符串,用逗号分割的名-值队。所有的名字和值都是通过URL编码的,所有必须通过decodeURIComponent()解码。

document.cookie除了可以获取现有的cookie,还能设置新的cookie,设置的新的cookie会被添加到现有的cookie集合中,document.cookie不会覆盖cookie除非设置的cookie名称已经存在

转载于:https://www.cnblogs.com/QxQstar/p/8504143.html

你可能感兴趣的文章
用Data Url (data:image/jpg;base64,)将小图片生成数据流形式
查看>>
实验2-2
查看>>
C#初识
查看>>
String,StringBuffer与StringBuilder的区别?? .
查看>>
JavaScript(三) 数据类型
查看>>
移动端rem布局屏幕适配插件(放js中便可使用)
查看>>
Docker
查看>>
bzoj2259 [Oibh]新型计算机
查看>>
对位与字节的深度认识
查看>>
C++编程基础二 16-习题4
查看>>
MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
查看>>
服务器被疑似挖矿程序植入107.174.47.156,发现以及解决过程(建议所有使用sonatype/nexus3镜像的用户清查一下)...
查看>>
类型“XXX”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。
查看>>
JQuery 学习
查看>>
session token两种登陆方式
查看>>
C# ArrayList
查看>>
IntelliJ IDEA 12集成Tomcat 运行Web项目
查看>>
java,多线程实现
查看>>
个人作业4-alpha阶段个人总结
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>