一、属性介绍

  • 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,之后的规则就是同域情况了


最新文章

  1. Centos7下安装mono3.10.0
  2. 烂泥:dnsmasq搭建简易DNS服务器
  3. Guava学习笔记:Guava新集合-Table等
  4. 移动端 设计与开发经验之ViewPort
  5. 解决IIS7该问.svc文件的错误问题
  6. 2013 ACM/ICPC Asia Regional Chengdu Online 1004 Minimum palindrome
  7. 问题处理:找不到Pch预编译文件?
  8. 哪些产品不用开发原生APP,微信公众号就够了?
  9. u-boot分析——struct gd_t与struct bd_t
  10. 02将代码开源到github(不会使用github的来看看吧)
  11. MD5和Base64
  12. Java Swing客户端小项目
  13. Android源码博文集锦2
  14. c++ 入门之深入探讨拷贝函数和内存分配
  15. PHP中友好的处理方式
  16. Flume采集Nginx日志到HDFS
  17. Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统,基于Google Dapper论文
  18. letcode code]Maximum Subarray
  19. webpack学习笔记—优化缓存、合并、懒加载等
  20. Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证

热门文章

  1. 二、详解mysql数据类型
  2. 理解下所谓的ssh隧道
  3. Centos7.6进入挂载硬盘后,进入应急模式(emergency mode)而非图形模式解决方法
  4. Java--8--新特性--Stream API
  5. asp.net 页面按回车就会触发button按钮事件
  6. 去除chrome网站https的安全检测
  7. MySql 数据库 SQLException: The user specified as a definer ('root'@'%') does not exist 错误原因及解决办法
  8. P2P system: GNUTELLA
  9. Git----基础常用的命令总结
  10. C#常用控件和属性