Cookie 概述
2024-09-01 09:49:18
一、属性介绍
Name
Cookie的key
Value
Cookie的value
Domain
可以访问此Cookie的域名
Path
可以访问此Cookie的页面路径
Expires/Max-Age
Cookie的生命期,不设置默认值是一次会话,浏览器进程关闭后,此Cookie失效
Size
此Cookie大小
HTTP
设置HttpOnly为true,则只有在http请求头中会带有此Cookie的信息,不能通过Document.cookie来访问此Cookie信息,防止XSS攻击
Secure
是否只能通过HTTPS协议来与WEB服务器之间传递此条Cookie数据
SameSite
用于定义Cookie如何跨域发送,用于阻止CSRF攻击,有两个属性Strict和Lax
详细介绍
二、跨域问题
1.Domain和Path的默认值
Domain默认html文件所在的域名,Path默认为html文件所在的路径
2.Domain设置规则
- 设置—js设置domain要符合域名的规则,可设置成 baidu.com,但是不能设置成baidu。不可以把cookie设置成不同于html域名的domian。会设置不成功。但不会影响后面程序对cookie的操作。如果domain设置错误,该cookie将不会被创建,并且后续对cookie的操作都会被浏览器禁止。js手动设置cookie的domain都是以.开头的。比如设置成 baidu.com,实际为 .baidu.com,删除cookie时可不加.
- 获取—js只能获取domian大于等于当前页面域名的cookie。如 www.baidu.com/testCookie.html 页面中的js能获取domain为 www.baidu.com 和 .www.baidu.com 和 .baidu.com,获取不到 news.baidu.com 中的cookie
- 删除—domain值必须跟要删除cookie的domain相同
3.Path设置规则
- 设置—js设置path要以”/”开头,如html路径为”/blog/20160623/”,路径可以设置成”/”或”/blog”, 如果path不是以”/”开头,则创建cookie的path会使用默认path;如果是以”/”开头,但是设置错误,路径名不存在或者直接设置成子路径。比如设置成”/20160623”,该cookie不会被创建,并且后续对cookie的操作不论正确与否都会被浏览器禁止
- 获取—js只能获取path大于等于当前页面path的cookie,如html路径为/blog/20160623/,使用js只能获取/blog/20160623/和/blog和/路径下的cookie
- 删除—js删除cookie时路径必须相同
页面能访问那些Cookie和从哪里引入js没有关系,跟Html文件所在的domain和path有关系。Cookie只能跨二级域名来访问,不能跨一级域名来访问。js删除一个cookie,domain和路径必须完全相同。
三、小实例
1.同域情况
name | domain | path |
---|---|---|
a | a.baidu.com | / |
b | a.baidu.com | /tmp |
c | a.baidu.com | /abc |
d | a.baidu.com | /abc/def |
/下的页面只能访问a
/tmp下的页面可以访问a,b
/abc下的页面可以访问a,c
/abc/def下的页面可以访问a,c,d
2.不同域情况
name | domain | path |
---|---|---|
a | a.baidu.com | / |
b | b.baidu.com | /tmp |
c | c.baidu.com | /abc |
d | d.baidu.com | /abc/def |
a,b,c,d不能同时被访问,指定域下的路径中的网页才能访问对应的Cookie
想要同时被访问就需要把domain修改为一级域 baidu.com,之后的规则就是同域情况了
最新文章
- Centos7下安装mono3.10.0
- 烂泥:dnsmasq搭建简易DNS服务器
- Guava学习笔记:Guava新集合-Table等
- 移动端 设计与开发经验之ViewPort
- 解决IIS7该问.svc文件的错误问题
- 2013 ACM/ICPC Asia Regional Chengdu Online 1004 Minimum palindrome
- 问题处理:找不到Pch预编译文件?
- 哪些产品不用开发原生APP,微信公众号就够了?
- u-boot分析——struct gd_t与struct bd_t
- 02将代码开源到github(不会使用github的来看看吧)
- MD5和Base64
- Java Swing客户端小项目
- Android源码博文集锦2
- c++ 入门之深入探讨拷贝函数和内存分配
- PHP中友好的处理方式
- Flume采集Nginx日志到HDFS
- Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统,基于Google Dapper论文
- letcode code]Maximum Subarray
- webpack学习笔记—优化缓存、合并、懒加载等
- Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证
热门文章
- 二、详解mysql数据类型
- 理解下所谓的ssh隧道
- Centos7.6进入挂载硬盘后,进入应急模式(emergency mode)而非图形模式解决方法
- Java--8--新特性--Stream API
- asp.net 页面按回车就会触发button按钮事件
- 去除chrome网站https的安全检测
- MySql 数据库 SQLException: The user specified as a definer ('root'@'%') does not exist 错误原因及解决办法
- P2P system: GNUTELLA
- Git----基础常用的命令总结
- C#常用控件和属性