我只是想在他们发布后,在.net-core控制器中获取客户端的IP地址。在客户端和服务器之间有一个负载均衡器。
我启动时的设置:
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});并配置:
app.UseForwardedHeaders();然后我尝试调用下面的代码,但它返回的是负载均衡器IP地址,而不是客户端IP:
var clientIpAddress = HttpContext.Connection.RemoteIpAddress.ToString();
我已经尝试了我能在这个网站和文档上搜索到的所有东西,但似乎都不起作用。我也尝试过使用HttpContext.Request.Headers["X-Forwarded-For"],它返回null / empty。
我们的运维团队表示,该IP没有被均衡器修改,应该在x-Forwarded-For头部的值中。为什么负载均衡器返回的是它的IP地址,而不是客户端的IP地址?
发布于 2021-01-29 11:06:55
您可以尝试使用此方法获取客户端IP地址:
1.添加Microsoft.AspNet.HttpOverrides包。
2.n您的configure()方法添加以下代码。
app.UseOverrideHeaders(new OverrideHeaderMiddlewareOptions
{
ForwardedOptions = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});发布于 2021-01-29 10:30:13
在X-Forwarded中,您将获得客户端ip,proxy1 & proxy2.
获取客户端/用户IP的第一项,第一项是原始客户端IP
HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new
char[] { ',' }).FirstOrDefault()https://stackoverflow.com/questions/65947201
复制相似问题