Come essere sicuri che una richiesta HTTP sia locale quando si utilizza HttPLISTENER
-
25-09-2019 - |
Domanda
sto usando HttpListener
. Tuttavia, voglio solo elaborare richieste che provengono a livello locale, non da un'altra macchina/server.
Come verificherei a livello di programmazione se una richiesta in arrivo è di sicuro locale? Avrei bisogno di usare un po 'di HttpListenerRequest
membri?
Soluzione
Controllare con RemoteEndPoint
proprietà Se l'indirizzo remoto della richiesta è uguale 127.0.0.1
.
Altri suggerimenti
Il HttpListenerRequest
ha una proprietà IsLocal
che dovrebbe anche fornire queste informazioni. Tuttavia, sta tornando false
sul mio computer. Riflettendo nel codice sorgente, sembra che ciò sia dovuto al fatto IsLocal
La proprietà utilizza il codice:
return this.LocalEndPoint.Address == this.RemoteEndPoint.Address;
Quando forse dovrebbe usare il codice nel (inaccessibile) InternalIsLocal
Proprietà che è:
return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address);
(Questa espressione ritorna true
per la mia situazione). L'uso di questo approccio potrebbe essere preferibile in modo che il codice non dipenda da un indirizzo IPv4 poiché la transizione viene effettuata su IPv6.