ホームページ  >  記事  >  Java  >  java.net.URI を使用して URL からドメイン名を確実に抽出する方法

java.net.URI を使用して URL からドメイン名を確実に抽出する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 11:30:30890ブラウズ

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

URL からのドメイン名の抽出

URL からドメイン名を抽出する最初のソリューションはある程度機能しますが、制限があり、潜在的なエッジケース。この記事では、java.net.URL の代わりに java.net.URI を使用した洗練されたアプローチを紹介します。

ソリューションの主な欠点は次のとおりです。

  • 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。