>  기사  >  Java  >  URL에서 도메인 이름을 안정적으로 추출하는 방법: 대체 기술 및 극단적 사례

URL에서 도메인 이름을 안정적으로 추출하는 방법: 대체 기술 및 극단적 사례

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 01:23:02231검색

How to Extract Domain Names from URLs Reliably: Alternative Techniques and Edge Cases

URL에서 도메인 이름 추출

이 질문은 URL에서 도메인 이름을 효과적으로 추출하는 방법을 모색합니다. 제공된 Java 코드가 합리적으로 작동하는 것처럼 보이지만 작성자는 신뢰성을 훼손할 수 있는 우수한 기술이나 잠재적인 극단적인 경우에 대해 문의합니다.

java.net.URI를 사용한 대체 구현

java.net.URL 대신 java.net.URI 클래스를 활용하여 URL을 구문 분석하는 보다 깔끔한 접근 방식을 권장합니다. 후자에는 신뢰할 수 없는 입력과 관련된 시나리오에서 코드를 취약점에 노출시킬 수 있는 문제가 있는 같음 메서드와 같은 알려진 문제가 있습니다.

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;
}

이 개선된 메서드는 잘못된 대소문자 또는 대소문자와 관련된 극단적인 사례를 처리하는 동안 도메인 이름을 효과적으로 검색해야 합니다. "www" 접두사의 변형.

고려해야 할 추가 예외 사례

원본 코드는 특정 URL 형식을 설명하지 못합니다:

  • httpfoo/bar(경로가 "http"로 시작하는 상대 URL)
  • HTTP://example.com(대소문자를 구분하지 않는 프로토콜)
  • //example.com(프로토콜 상대 URL) 호스트 포함)
  • www/foo(경로가 "www"로 시작하는 상대 URL)
  • wwwexample.com("www"로 시작하지만 "www" 접두사는 아님)

이러한 극단적인 경우를 해결하려면 URI 참조를 구문 분석하고 이를 개별 구성 요소로 분류하기 위한 포괄적인 정규식을 제공하는 RFC 3986의 부록 B를 참조하는 것이 좋습니다.

위 내용은 URL에서 도메인 이름을 안정적으로 추출하는 방법: 대체 기술 및 극단적 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.