从没有子域等的网址解析主机

时间:2015-07-15 22:11:21

标签: javascript url google-chrome-extension

我正在处理从window.location.hostname读取域的chrome扩展程序。现在,为了使此扩展能够正常工作,我需要能够将子域和其他URL变体分离到同一主机。例如:

我需要以下所有网址:s

www.google.com
accounts.google.com
photos.google.se
example.google.co.uk
https://google.com

所有这些都需要解决,在这种情况下," google",以可靠的方式解决,并且适用于任何有时候古怪的子域配置的网站。

这是我目前的方法,有点简化:

var url = window.location.hostname.split(".") //returns an array of strings
for(i=0;i<url.length;i++){
if(url[i].match(domainregex) //regex for identifying domains ".com",".se",".co.uk" etc
return url[i-1]  //usually what I'm after is directly before the domain, thus i-1
}

这种方法很麻烦,有时候证明不可靠......有没有更直接的方法呢?

2 个答案:

答案 0 :(得分:5)

剥离顶级域名部分并获取主域名部分的更可靠的解决方案是使用Firefox和Chrome以及其他浏览器使用的Public Suffix List

如果您不想编写自己的列表数据,则可以使用

Several js parsers

答案 1 :(得分:0)

我必须为我的编辑 - 我的cookie分叉,所以它将能够更改每个站点的cookie的配置文件。 (https://github.com/AminaG/swap-my-cookies-multisite/blob/master/js/tools.js

这就是我所做的,它对我有用。我确信如果不是完整的解决方案,但我相信它可以提供帮助。

if self.orderDirection == .Ascending {

它适用于:

var remove_sub_domain=function(v){
    var is_co=v.match(/\.co\./)
    v=v.split('.')
    v=v.slice(is_co ? -3: -2)
    v=v.join('.')
    console.log(v)
    return v
}

如果您希望它也适用于:

www.google.com
accounts.google.com
photos.google.se
example.google.co.uk
google.com

首先需要删除协议:

http://gooogle.com