HTTP Cookie的域名和路径匹配

介绍

本文主要通过整理RFC6265 - HTTP State Management Mechanism文档的域名和路径匹配章节,然后加以实验验证,最后梳理出一些技术要点,仅供大家参考。

Domain Matching

假设request_domain为请求域名,cookie_domain为cookie的domain属性,如果request_domain和cookie_domain以点"."结尾,则先将尾部的点"."移除。 如果request_domain和cookie_domain满足以下任一个条件,则称request_domain和cookie_domain匹配: ** 1. request_domain和cookie_domain是同级域名,并且相等 **

  • request_domain(www.google.com)和cookie_domain(www.google.com)匹配

** 2. request_domain和cookie_domain不同级,并且cookie_domain是request_domain的后缀 **

  • request_domain(www.google.com)和cookie_domain(google.com)匹配
  • request_domain(www.google.com)和cookie_domain(.google.com)匹配
  • request_domain(img.static.google.com)和cookie_domain(static.google.com)匹配

cookie_domain(google.com)和cookie_domain(.google.com)匹配所有子域名

不匹配示例:

  • request_domain(google.com)和cookie_domain(www.google.com)不匹配
  • request_domain(abc.google.com)和cookie_domain(c.google.com)不匹配

Path Matching

假设request_path为请求路径,cookie_path为cookie的path属性。 如果cookie_path和request_path满足以下任一个条件,则称cookie_path和request_path匹配: ** 1. cookie_path和request_path是同级路径,并且相等 **

  • request_path(/)和cookie_path(/)
  • request_path(/a)和cookie_path(/a)

** 2. cookie_path和request_path不是同级路径,并且cookie_path是request_path的前缀 **

  • request_path(/a)和cookie_path(/)
  • request_path(/a/b)和cookie_path(/a)

cookie_path(/)匹配所有request_path

不匹配示例:

  • request_path(/a)和cookie_path(/a/)
  • request_path(/ab)和cookie_path(/a)

Set-Cookie

假设当前请求的域名是request_domain, 响应中Set-Cookie的域名是cookie_domain,路径是cookie_path,则:

  • 如果cookie_domain未指定,则默认为request_domain。
  • 如果cookie_path未指定,则默认为/。
  • request_domain必须匹配cookie_domain,否则浏览器会丢弃该Set-Cookie 例如request_domain(www.google.com)的响应中包含一个Set-Cookie,其cookie_domain为api.google.com,则浏览器会丢弃该Set-Cookie。

Cookie可以跨端口共享吗?

可以的,只要同时满足Domain Match和Path Match即可。

参考文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我有一个梦想

C++服务器开发之笔记三

为什么需要原子性操作? 我们考虑一个例子: (1)x++这个常见的运算符在内存中是怎样操作的? 从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内...

2057
来自专栏java一日一条

Java接口回调机制详解

最近在看android fragment与Activity进行数据传递的部分,看到了接口回调的内容,今天来总结一下。

1583
来自专栏自动化测试实战

接口测试框架分析

2964
来自专栏小樱的经验随笔

【批处理学习笔记】第二十课:扩充字符串

    “扩充”这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下: ========================...

3336
来自专栏java一日一条

Java接口回调机制详解

最近在看android fragment与Activity进行数据传递的部分,看到了接口回调的内容,今天来总结一下。

3682
来自专栏无题

线程安全与锁优化——深入理解JVM阅读笔记

我根据我的理解把一些关键的要点整理了出来,并对其中一些内容作了删改。 参考地址:http://www.cnblogs.com/pacoson/p/5351355...

3605
来自专栏专注 Java 基础分享

Java并发之线程间的协作

     上篇文章我们介绍了synchronized关键字,使用它可以有效的解决我们多线程所带来的一些常见问题。例如:竞态条件,内存可见性等。并且,我们也说明了...

2279
来自专栏自动化测试实战

RF关键字封装

1.2K9
来自专栏進无尽的文章

设计模式| 行为型模式 (下)

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、解释器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式。分两篇文章...

1062
来自专栏林冠宏的技术文章

java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍

(原创,转载请说明出处!谢谢--https://cloud.tencent.com/developer/user/1148436/activities)  此文...

2017

扫码关注云+社区

领取腾讯云代金券