笔记:如何获取网站根域名

本文介绍了如何在前端开发中获取网站的根域名,讨论了使用正则匹配的局限性,以及尝试利用PSL库和`document.domain`属性解决问题的尝试。由于浏览器限制,最终采用通过设置和检查Cookie来确定根域名的方法,成功实现了跨子域名的Cookie共享。
摘要由CSDN通过智能技术生成

首先声明,这里所说的“根域名”,并不是指“全球共有13台根逻辑域名服务器”这句话中的“根域名”。而是指某一个站点的“根域名”。

百度搜索是“www.baidu.com”,百度翻译的域名是“fanyi.baidu.com”,百度地图的域名则是“map.baidu.com”。这些域名有共同的部分“baidu.com”。在本文中,我们将“baidu.com”这样的域名称为“根域名”。前端同学应该都知道,在“.baidu.com”这一域下的 cookie 可以在其他子站点下拿到(当然,前提是端口号和协议都保持一致)。

最近开发的过程中遇上了一个小问题。无论访问哪个子站点,都要通过 js 将 cookie 存放到根域名下。

一开始比较大意,直接拿正则匹配。问题是忽略了这世界上还存在“www.xxx.edu.cn”这样的站点。在这种情况下,显然我们不能认为”edu.cn“是根域名。想在一个叫“edu.cn”的域下存 cookie?对不起,浏览器做不到。(这句话很重要。)

正则匹配是做不到了。搜索了一下,网上也没有什么特别好的解决方案。无非是枚举出国内常见的一些顶级域名,然后再进行处理,如下面这个 PHP 的例子:

但如何确保我们枚举出的例子一定是完全的无遗漏的呢?不完美,放弃。

PSL

接着上 github 上去找例子。倒是发现了一些解决域名的工具。比如一个名为

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值