System.Uri
a Host
, Authority
et DnsSafeHost
. MS fournit un bon exemple de quand Host
y DnsSafeHost
sont différents ici .
J'aimerais avoir un exemple/explication similaire pour Host
y Authority
.
System.Uri
a Host
, Authority
et DnsSafeHost
. MS fournit un bon exemple de quand Host
y DnsSafeHost
sont différents ici .
J'aimerais avoir un exemple/explication similaire pour Host
y Authority
.
Oui, Brandon a tout à fait raison, en termes simples.
Autorité = Nom d'hôte + n° de port
Et si le protocole URL utilise un port par défaut, disons le port 80 pour l'URL http, alors seulement dans ce cas Autorité = Nom de l'hôte (le numéro de port est supposé être 80),
Alors que le nom d'hôte est soit un nom de domaine, soit une adresse IP.
Exemple :
http://www.example.com/
Autorité = www.example.com
Nom d'hôte = www.example.com
http://255.255.255.255:8080/
Autorité = 255.255.255.255:8080
Nom d'hôte = 255.255.255.255
Un petit doute. Si j'exécute l'application en localhost j'ai le numéro de port dans mon URL mais en production je n'ai pas de numéro de port dans l'URL. Je peux donc utiliser librement Url.Authority, n'est-ce pas ? Je veux dire que si le numéro de port n'est pas présent, URl.Authority agira de la même manière que URL.Host. Je veux dire que je serai toujours en mesure d'obtenir l'URL correctement, n'est-ce pas ? Veuillez me guider.
Existe-t-il une documentation de référence pour cette réponse ? Quelque chose qui fait autorité ?
De MSDN URI.Host page.
Contrairement à la propriété Authority, la valeur de cette propriété ne comprend pas le numéro de port.
Un petit doute. Si j'exécute l'application en localhost j'ai le numéro de port dans mon URL mais en production je n'ai pas de numéro de port dans l'URL. Donc, je peux utiliser librement Url.Authority, n'est-ce pas ? Je veux dire que si le numéro de port n'est pas présent, URl.Authority agira de la même manière que URL.Host. Je veux dire que je serai toujours en mesure d'obtenir l'URL correctement, n'est-ce pas ? Veuillez me guider.
Chaque URL HTTP est conforme à la syntaxe d'un URI générique. La syntaxe de l'URI générique consiste en une séquence hiérarchique de cinq composants :
URI = scheme:[//authority]path[?query][#fragment]
où le autorité se divise en trois sous-composantes :
authority = [userinfo@]host[:port]
Comme ça :
Une option autorité composante précédée de deux barres obliques (//), comprenant :
Pour plus de détails, vous pouvez vous référer à https://en.wikipedia.org/wiki/URL .
Pour la classe Uri dans .NET, Authority inclut le port, Host ne l'inclut pas et aucun des deux n'inclut les informations sur l'utilisateur.
Quelques exemples d'URIs valides :
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));
Selon RFC3986 , Section 3.2 l'Autorité contient
PAS seulement l'hôte et le numéro de port.
Par exemple, le texte suivant est une URI valide :
http://user:password@host:80/path
dans laquelle l'Autorité est
user:password@host:80
Le symbole at (@) sépare les informations sur l'utilisateur de l'hôte et les deux points ( :) séparent l'hôte du numéro de port. Dans les informations sur l'utilisateur, les deux points ( :) séparent le nom d'utilisateur du mot de passe. (Oui, je sais que la partie mot de passe est dépréciée. Elle peut encore être supportée de manière optionnelle).
Il s'agit du cahier des charges complet d'une autorité. Évidemment, les informations sur l'utilisateur et le numéro de port sont souvent absents.
El La classe Uri de .NET supprime les informations relatives à l'utilisateur. lors du retour de l'autorité, ce qui est plutôt ennuyeux car ce n'est pas correct. Au lieu de cela, vous pouvez trouver les informations sur l'utilisateur dans la propriété UserInfo :
Uri.UserInfo
D'autres réponses sont techniquement correctes pour dire que pour la classe .NET Uri que la différence entre Uri.Authority et Uri.Host est que l'hôte ne contiendra pas de numéro de port.
Mais sachez que L'autorité n'est pas correctement définie de la manière dont elle est utilisée dans la classe Uri de .NET. car il peut aussi contenir des informations sur l'utilisateur.
Un petit doute. Si j'exécute l'application en localhost j'ai le numéro de port dans mon URL mais en production je n'ai pas de numéro de port dans l'URL. Je peux donc utiliser librement Url.Authority, n'est-ce pas ? Je veux dire que si le numéro de port n'est pas présent, URl.Authority agira de la même manière que URL.Host. Je veux dire que je serai toujours en mesure d'obtenir l'URL correctement, n'est-ce pas ? Veuillez me guider.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.