System.Uri
持っているHost
、Authority
とDnsSafeHost
。MSは、ここでいつHost
とDnsSafeHost
が異なるかについての良い例を提供します。
私はのための同様の例/説明が欲しいHost
とAuthority
。
回答:
はいブランドンは素人の言葉で絶対に正しいです
権限=ホスト名+ポート番号
また、URLプロトコルがデフォルトのポート(http URLにポート80など)を使用している場合は、その場合にのみ、権限=ホスト名(ポート番号は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から MSDNURI.Hostページ。
Authorityプロパティとは異なり、このプロパティ値にはポート番号は含まれません。
すべてのHTTPURLは、汎用URIの構文に準拠しています。URIの一般的な構文は、次の5つのコンポーネントの階層シーケンスで構成されています。
URI = scheme:[//authority]path[?query][#fragment]
ここで、権限コンポーネントは3つのサブコンポーネントに分割されます。
authority = [userinfo@]host[:port]
このような:
2つのスラッシュ(//)が前に付いたオプションの権限コンポーネント。
詳細については、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
アットマーク(@)はホストからのユーザー情報を区切り、コロン(:)はホストをポート番号から区切ります。ユーザー情報内では、コロン(:)でユーザー名とパスワードを区切ります。(はい、パスワード部分が非推奨になっていることは知っています。オプションでサポートされる可能性があります。)
これは、機関の完全な仕様です。明らかに、ユーザー情報とポート番号はしばしば存在しません。
.NETのUriクラスは、Authorityを返すときにユーザー情報をドロップしますが、これは正しくないため、かなり面倒です。代わりに、UserInfoプロパティでユーザー情報を見つけることができます。
Uri.UserInfo
他の答えは技術的に正しいと言って、.NET Uriクラスの場合、Uri.AuthorityとUri.Hostの違いは、ホストにポート番号が含まれないことです。
ただし、Authorityにはユーザー情報も含まれている可能性があるため、.NETUriクラスでの使用方法が適切に定義されていないことに注意してください。
リンクしたドキュメントによると、Authority
プロパティはUriのデフォルトのポートと同じでない場合はポート番号を含みHost
ますが、プロパティはDNSホスト名またはIPアドレスのみを返します。
それ以上の違いはないと思います。
権限には、ユーザー名とパスワードを含めることもできます。
bob:pwd@somewhere.example.com
FTPURIでより一般的に使用されます