使用HttpListener时如何确保http请求是本地的

Gre*_*reg 2 .net http httplistener httplistenerrequest

我正在使用HttpListener.但是,我只想处理来自本地的请求,而不是来自其他计算机/服务器的请求.

我如何以编程方式验证传入的请求是否是本地的?我需要使用一些HttpListenerRequest会员吗?

erd*_*mke 5

HttpListenerRequest有一个属性IsLocal也应该提供这些信息.但是,它正在false我的电脑上返回.反映到源代码中,似乎这是因为该IsLocal属性使用代码:

    return this.LocalEndPoint.Address == this.RemoteEndPoint.Address;
Run Code Online (Sandbox Code Playgroud)

或许它应该使用(不可访问)InternalIsLocal属性中的代码,即:

    return this.LocalEndPoint.Address.Equals(this.RemoteEndPoint.Address);
Run Code Online (Sandbox Code Playgroud)

(这个表达式返回true我的情况).使用此方法可能更为可取,因此您的代码不依赖于IPv4地址,因为转换是针对IPv6的.

  • 实际上,我不确定"IsLocal"是否真的会回归.由于`IpAddress`类不会重载`==`运算符,所以`IsLocal`属性正在执行引用相等,它可能总是返回false,而不可访问的`InternalIsLocal`正在执行值相等,应该在适当的时候返回true.我假设当通过外部IP地址访问您的机器时,值相等版本将返回true. (2认同)