Cookies 理解RFC6265域匹配条件

Cookies 理解RFC6265域匹配条件,cookies,domain-name,rfc6265,Cookies,Domain Name,Rfc6265,我希望实现一个简单的方法来检查给定的cookie域是否与给定的主机名匹配 为此,我将实现中定义的域匹配条件 定义的两个匹配条件中的第二个是多部分条件,其中应用了三个子条件: 以下所有条件均成立: 域字符串是字符串的后缀 未包含在域字符串中的字符串的最后一个字符是%x2E(“.”)字符 字符串是主机名(即,不是IP地址) 为清楚起见,当上面引用的文本指的是“字符串”时,它指的是cookie的域值,当上面引用的文本指的是“域名”时,它指的是cookie可能发送到的主机的域名 在这三个子条件中,第

我希望实现一个简单的方法来检查给定的cookie域是否与给定的主机名匹配

为此,我将实现中定义的域匹配条件

定义的两个匹配条件中的第二个是多部分条件,其中应用了三个子条件:

以下所有条件均成立:

  • 域字符串是字符串的后缀
  • 未包含在域字符串中的字符串的最后一个字符是%x2E(“.”)字符
  • 字符串是主机名(即,不是IP地址)
为清楚起见,当上面引用的文本指的是“字符串”时,它指的是cookie的域值,当上面引用的文本指的是“域名”时,它指的是cookie可能发送到的主机的域名

在这三个子条件中,第一个和第三个条件非常明确。我感到困惑的是第二条的措辞

我知道“example.com”的cookie域只匹配“example.com”,而“.example.com”的cookie域匹配“.example.com”。我最好的猜测是,上面的第二个子条件,如果指的是这个广泛的子域匹配概念,但鉴于措辞,我不能肯定

有人能把第二个条件翻译成简单的技术英语吗

例如,如果域属性的值为“example.com”,则当向example.com、www.example.com和www.corp.example.com发出HTTP请求时,用户代理将在cookie头中包含cookie。(请注意,即使不允许使用前导的%x2E(“.”)字符,也会忽略该字符(如果存在),但尾随的%x2E(“.”)将导致用户代理忽略该属性。)

因此,逻辑是:

1. check targetString endsWith domain
2. check lastChar(targetString) != "."
3. check targetString is host name

当我试图理解这种特殊情况时,我也经历了很多挣扎。第十五次阅读后,我注意到我没有注意到关键词。引用(并强调):

  • 未包含在域字符串中的字符串的最后一个字符是%x2E(“.”)字符
因此,我相信以下Python 3实现将符合RFC:

导入IP地址
定义域匹配(字符串:str,域字符串:str)->bool:
string=string.lower()
domain\u string=domain\u string.lower()
尝试:
ip地址。ip地址(字符串)
is_host=False
除值错误外:
_host=True吗
返回(
字符串==域\字符串
或
(string.endswith(域字符串)
和
字符串[-(len(域字符串)+1)]==”
和
is(主机)
)
ipaddress
位要完全迂腐。然而,对于我的用例,我省略了它