Como ter certeza de que uma solicitação HTTP é local ao usar o httplistener
-
25-09-2019 - |
Pergunta
estou a usar HttpListener
. No entanto, eu só quero processar solicitações que vêm localmente, não de outra máquina/servidor.
Como eu verificaria programaticamente se uma solicitação de entrada é local, com certeza? Eu precisaria usar parte do HttpListenerRequest
membros?
Solução
Verificar com RemoteEndPoint
propriedade Se o endereço remoto da solicitação for igual 127.0.0.1
.
Outras dicas
o HttpListenerRequest
tem uma propriedade IsLocal
que também deve fornecer essas informações. No entanto, está retornando false
no meu computador. Refletindo no código -fonte, parece que isso ocorre porque o IsLocal
A propriedade usa o código:
return this.LocalEndPoint.Address == this.RemoteEndPoint.Address;
quando talvez ele deva usar o código no (inacessível) InternalIsLocal
propriedade que é:
return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address);
(Esta expressão retorna true
para minha situação). O uso dessa abordagem pode ser preferível para que seu código não dependa de um endereço IPv4, pois a transição é feita para o IPv6.