System.Uri
이 Host
, Authority
그리고 DnsSafeHost
. MS는 여기서Host
와 DnsSafeHost
다른 시기에 대한 좋은 예를 제공합니다 .
Host
및에 대한 유사한 예제 / 설명이 필요 Authority
합니다.
답변
예 Brandon은 평신도 용어로 절대적으로 정확합니다.
권한 = 호스트 이름 + 포트 번호
URL 프로토콜이 기본 포트를 사용하는 경우 http URL에 대해 포트 80이라고 말하면 해당 경우에만 Authority = Host Name (포트 번호는 80으로 간주 됨),
호스트 이름은 도메인 이름 또는 IP 주소입니다.
예:
-
http://www.example.com/
기관 = www.example.com
호스트 이름 = www.example.com -
http://255.255.255.255:8080/
권한 = 255.255.255.255:8080
호스트 이름 = 255.255.255.255
답변
MSDN URI.Host 페이지에서.
Authority 속성과 달리이 속성 값에는 포트 번호가 포함되지 않습니다.
답변
모든 HTTP URL은 일반 URI의 구문을 따릅니다. URI 일반 구문은 5 가지 구성 요소의 계층 적 시퀀스로 구성됩니다.
URI = scheme:[//authority]path[?query][#fragment]
여기서 기관 세 개의 하위 구성 요소로 분열 :
authority = [userinfo@]host[:port]
이렇게 :
두 개의 슬래시 (//)가 앞에 오는 선택적 권한 구성 요소는 다음을 포함합니다.
- 사용자 이름과 콜론 (:), at 기호 (@)가 앞에 오는 선택적 암호로 구성 될 수 있는 선택적 userinfo 하위 구성 요소입니다. 보안상의 이유로 userinfo 하위 구성 요소에서 username : password 형식의 사용은 더 이상 사용되지 않습니다. 응용 프로그램은 콜론 뒤의 데이터가 빈 문자열 (암호 없음을 나타냄)이 아닌 한 userinfo 하위 구성 요소에서 발견 된 첫 번째 콜론 (:) 뒤의 데이터를 일반 텍스트로 렌더링해서는 안됩니다.
- 등록 된 이름 (호스트 이름을 포함하되 이에 국한되지 않음) 또는 IP 주소로 구성된 선택적 호스트 하위 구성 요소. IPv4 주소는 점 10 진수 표기법이어야하며 IPv6 주소는 대괄호 ([])로 묶어야합니다.
- 콜론 (:)이 앞에 오는 선택적 포트 하위 구성 요소.
자세한 내용은 https://en.wikipedia.org/wiki/URL 을 참조하세요 .
답변
.NET의 Uri 클래스의 경우 Authority는 포트를 포함하고 Host는 포함하지 않으며 사용자 정보도 포함하지 않습니다.
유효한 URI의 몇 가지 예 :
Uri u = new Uri("http://www.domain.com/path");
Assert.AreEqual("www.domain.com", u.Authority);
Assert.AreEqual("www.domain.com", u.Host);
Assert.AreEqual("http://www.domain.com", u.GetLeftPart(UriPartial.Authority));
u = new Uri("http://www.domain.com:8080/path");
Assert.AreEqual("www.domain.com:8080", u.Authority);
Assert.AreEqual("www.domain.com", u.Host);
Assert.AreEqual("http://www.domain.com:8080", u.GetLeftPart(UriPartial.Authority));
u = new Uri("http://user:password@host:555/path");
Assert.AreEqual("host:555", u.Authority);
Assert.AreEqual("host", u.Host);
Assert.AreEqual("http://user:password@host:555", u.GetLeftPart(UriPartial.Authority));
- 사용자 정보
- 주최자
- 포트 번호.
호스트와 포트 번호 만이 아닙니다.
예를 들어 다음은 유효한 URI입니다.
http://user:password@host:80/path
당국은
user:password@host:80
at 기호 (@)는 호스트에서 사용자 정보를 구분하고 콜론 (:)은 포트 번호에서 호스트를 구분합니다. 사용자 정보 내에서 콜론 (:)은 비밀번호에서 사용자 이름을 구분합니다. (예, 비밀번호 부분이 더 이상 사용되지 않음을 알고 있습니다. 선택적으로 지원 될 수도 있습니다.)
이것은 기관의 전체 사양입니다. 분명히 사용자 정보와 포트 번호는 종종 존재하지 않습니다.
.NET 의 Uri 클래스는 정확하지 않기 때문에 다소 성가신 Authority를 반환 할 때 사용자 정보를 삭제합니다 . 대신 UserInfo 속성에서 사용자 정보를 찾을 수 있습니다.
Uri.UserInfo
다른 답변은 기술적으로 .NET Uri 클래스 의 경우 Uri.Authority와 Uri.Host의 차이점은 호스트에 포트 번호가 포함되지 않는다는 것입니다.
그러나 Authority는 사용자 정보도 포함 할 수 있으므로 .NET Uri 클래스에서 사용되는 방식으로 적절하게 정의되지 않았습니다 .
답변
연결 한 설명서에 따르면 Authority
속성은 Uri의 기본 포트와 동일하지 않은 경우 포트 번호를 포함하고 Host
속성은 DNS 호스트 이름 또는 IP 주소 만 반환합니다.
나는 그것보다 더 많은 차이점이 있다고 생각하지 않습니다.
답변
권한에는 사용자 이름과 비밀번호도 포함될 수 있습니다.
bob : pwd@somewhere.example.com
FTP URI에 더 일반적으로 사용됨