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
User Information
부품을 놓쳤습니다 .
MSDN URI.Host 페이지에서.
Authority 속성과 달리이 속성 값에는 포트 번호가 포함되지 않습니다.
모든 HTTP URL은 일반 URI의 구문을 따릅니다. URI 일반 구문은 5 가지 구성 요소의 계층 적 시퀀스로 구성됩니다.
URI = scheme:[//authority]path[?query][#fragment]
여기서 기관 세 개의 하위 구성 요소로 분열 :
authority = [userinfo@]host[:port]
이렇게 :
두 개의 슬래시 (//)가 앞에 오는 선택적 권한 구성 요소는 다음을 포함합니다.
자세한 내용은 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에 더 일반적으로 사용됨