Comment assurez-vous une demande http est locale lors de l'utilisation HttpListener
-
25-09-2019 - |
Question
J'utilise HttpListener
. Cependant, je veux seulement traiter les demandes qui viennent localement, et non d'une autre machine / serveur.
Comment puis-je vérifier si une demande par programme entrant est local pour vous? Est-ce que je dois utiliser quelques-uns des membres de HttpListenerRequest
?
La solution
Consultez RemoteEndPoint
propriété si l'adresse distante de la demande est égale à 127.0.0.1
.
Autres conseils
Le HttpListenerRequest
a une propriété IsLocal
qui devrait également fournir ces informations. Cependant, il revient false
sur mon ordinateur. Reflétant dans le code source, il semble que ce soit parce que la propriété IsLocal
utilise le code:
return this.LocalEndPoint.Address == this.RemoteEndPoint.Address;
quand peut-être qu'il doit utiliser le code dans le (inaccessible) propriété InternalIsLocal
qui est:
return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address);
(Cette expression renvoie true
pour ma situation). En utilisant cette approche peut être préférable afin que votre code ne dépend pas d'une adresse IPv4 que la transition est faite à l'IPv6.