关于OkHttp3中publicsuffixes.gz的使用

关于OkHttp3中publicsuffixes.gz的使用

publicsuffixes.gz中是一个压缩的文本文件,里面包含了目前公开的“公共后缀列表”。
关于“公共后缀列表”的解释如下:、

“公共后缀”是指互联网用户可以(或历史上可以)直接注册名称的公共后缀。一些公共后缀的例子是.COM, .co.uk 和 pvt.k12.ma.us。公共后缀列表是所有已知公共后缀的列表。

公共后缀列表是Mozilla的一项举措,但作为社区资源进行维护。它可用于任何软件,但最初是为满足浏览器制造商的需求而创建的。它允许浏览器,例如:

避免为高级域名后缀设置破坏隐私的“supercookies”
突出显示用户界面中域名最重要的部分
按站点准确排序历史记录条目
我们保留了一份更全面(尽管并非详尽无遗)的人员名单。如果您将其用于其他目的,我们鼓励您告诉我们,因为它有助于我们评估变更的潜在影响。为此,您可以使用psl-discuss邮件列表,我们在其中考虑与列表的维护,格式和语义相关的问题。注意:请不要使用此邮件列表来 请求修改 PSL的数据。

部分数据示例如下:

*.alces.network
*.alwaysdata.net
在线
埼玉.jp
大众汽车
大分.jp
大拿
大阪.jp
天主教

为了互联网注册管理机构的利益,可以看到列表中的部分是最新的。如果不是,他们的客户可能无法设置Cookie,或者有关其网站的数据可能显示不佳。所以我们鼓励他们通过提交修正案来维护他们的部分。

在OkHttp3中主要用到Cookie解析时,判断Domain的值,是否是url host的后缀以及是否是公共后缀。

//okhttp3

static @Nullable Cookie parse(long currentTimeMillis, HttpUrl url, String setCookie) {
    ...
        // If the domain is a suffix of the url host, it must not be a public suffix.
    if (urlHost.length() != domain.length()
        && PublicSuffixDatabase.get().getEffectiveTldPlusOne(domain) == null) {
      return null;
    }
    ...
}

该步骤就是验证了Set-Cookie中返回的Domain域名的合法性,如果和url host长度不一致(Domain:abc.com ; url host:o.abc.com),并且不在公共的域名列表中,则返回null,也就是认为该Cookie不合法,不会返回给客户端。

你可能感兴趣的:(Android,Java,网络)