本文介紹了InternetDomainName和Public Suffix列表的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
Guava 21 InternetDomainName API使用哪個版本的公共后綴列表(https://publicsuffix.org/)?
分析keyupgrade.spaceforupdate.download
結果為
scala> InternetDomainName.from("keyupgrade.spaceforupdate.download").topPrivateDomain
java.lang.IllegalStateException: Not under a public suffix: keyupgrade.spaceforupdate.download
at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
at com.google.common.net.InternetDomainName.topPrivateDomain(InternetDomainName.java:445)
... 50 elided
但是,根據https://publicsuffix.org/list/public_suffix_list.dat,.download是一個有效的公共后綴。
我認為芭樂21正在使用一個較舊版本的公共后綴列表。有什么方法可以更新它嗎?謝謝!
推薦答案
此對話在番石榴郵件列表上同時發生;我將在此處合并它。在郵件列表的最新回復中,Neera用以下代碼響應了我的請求:
我正在嘗試解析”key upgrade.spaceforupdate.download”,其中
根據最新的Mozilla公共后綴,.Download是有效的TLD
列表,但番石榴無法解析它。Scala>
InternetDomainName.from(“keyupgrade.spaceforupdate.download”).topPrivateDomain
Java.lang.IlLegalStateException:不在公共后綴下:
Key upgrade.spaceforupdate.下載地址:
Com.google.common.base.Preconditions.checkState(Preconditions.java:176)
在…
Com.google.common.net.InternetDomainName.topPrivateDomain(InternetDomainName.java:445)
…50省略
我想知道這是否可能是Scala特有的問題。正如我提到的,下載已經在PSL中存在很長一段時間了(根據PSL本身的說法,從2014-11-20開始),它在PSL的本地副本中,在版本21構建之前的幾年里一直被用來構建Guava。請注意,我在Java中對我們的Head版本進行了測試,得到了預期的輸出”spaceforupdat.download”:
public static void main(String[] args) {
InternetDomainName top =
InternetDomainName.from("keyupgrade.spaceforupdate.download").topPrivateDomain();
System.out.println(top);
}
帶有”明顯”后綴的測試有效嗎?例如,”www.google.com”的頂級私域應該是”google.com”。請嘗試這樣做,如果可能的話,嘗試使用Java而不是Scala進行測試。我期待著聽到這些測試的結果。
這篇關于InternetDomainName和Public Suffix列表的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,