首頁  >  文章  >  Java  >  如何使用 java.net.URI 從 URL 中可靠地提取網域名稱?

如何使用 java.net.URI 從 URL 中可靠地提取網域名稱?

Susan Sarandon
Susan Sarandon原創
2024-11-02 11:30:30807瀏覽

How to Reliably Extract Domain Names from URLs Using java.net.URI?

從URL 提取網域名稱

從URL 中提取網域的初始解決方案有些功能,但它有其限制和潛在的邊緣情況。本文介紹了一種使用 java.net.URI 而不是 java.net.URL 的改進方法。

您的解決方案的主要缺點包括:

  • 容易受到 java 導致的拒絕服務攻擊.net.URL 在其 equals 方法中進行 DNS 查找。
  • 對各種有效 URL 格式的錯誤處理,例如相對路徑、不區分大小寫的協定等。

使用 java.net.URI 的改進方法

java.net.URI 提供了更健壯、更可靠的 URL 解析方法。更新後的程式碼片段:

<code class="java">public static String getDomainName(String url) throws URISyntaxException {
    URI uri = new URI(url);
    String domain = uri.getHost();
    return domain.startsWith("www.") ? domain.substring(4) : domain;
}</code>

邊緣情況和注意事項

此修訂後的方法解決了原始程式碼中遇到的邊緣情況。它處理:

  • 路徑以“http”開頭的相對URL
  • 不區分大小寫的協議
  • 沒有協議的URL
  • 以“”開頭的URL www”,但與網域模式不符

此外,內建的URI解析器嚴格遵循RFC 3986語法,確保複雜URL的準確解析。

綜上所述,利用java.net.URI 為從URL 中提取網域提供了更全面、更可靠的解決方案,消除了潛在的陷阱並確保穩健地處理不同的URL 格式。

以上是如何使用 java.net.URI 從 URL 中可靠地提取網域名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn