CORS 中源的比较

定义

在日常开发当中,我们一般遇到的源(Origin)是指元组源(tuple origin),由以下几个部分组成:协议、主机名、端口、域名。

在主机名包括了域名的情况下,关于规范中为什么同时定义了主机名和域名,ChatGPT 3.5 是这样说的:“在 HTML 中,元组源定义同时包括 host 和 domain 的目的是为了允许在同源策略中进行更精细的控制和识别。host 表示主机的网络位置,而 domain 表示主机所属的域。”

比较

当源 A 与源 B 的协议、主机名、端口都一致的时候,A 与 B 视为同源。

主机名可以是IP或者域名,规范中还定义了其他两种。

一个页面可以为本域和其父域设置 cookie,只要是父域不是公共后缀。假如我有一个域名 example.com,那么 a.example.com 是它的子域名。我在 a.example.com 下可以为 example.com 设置 cookie。但是当 example.com 加入了公共后缀表后,这就不行了。因为这时候获取到的可注册域名就不一致了。

主机名 公共后缀 Registrable domain
com com null
example.com com example.com
www.example.com com example.com
sub.www.example.com com example.com
EXAMPLE.COM com example.com
example.com. com. example.com.
github.io github.io null
whatwg.github.io github.io whatwg.github.io
إختبار xn--kgbechtv null
example.إختبار xn--kgbechtv example.xn--kgbechtv
sub.example.إختبار xn--kgbechtv example.xn--kgbechtv
[2001:0db8:85a3:0000:0000:8a2e:0370:7334] null null

参考资料

posted @ 2024-03-26 15:19  雷夫·麦  阅读(2)  评论(0编辑  收藏  举报