首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.net-core中获取客户端IP地址,而不是负载均衡器?(使用X-Forwarded For)

如何在.net-core中获取客户端IP地址,而不是负载均衡器?(使用X-Forwarded For)
EN

Stack Overflow用户
提问于 2021-01-29 08:34:01
回答 2查看 344关注 0票数 1

我只是想在他们发布后,在.net-core控制器中获取客户端的IP地址。在客户端和服务器之间有一个负载均衡器。

我启动时的设置:

代码语言:javascript
复制
            services.Configure<ForwardedHeadersOptions>(options =>
            {
                options.ForwardedHeaders =
                    ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
            });

并配置:

代码语言:javascript
复制
app.UseForwardedHeaders();

然后我尝试调用下面的代码,但它返回的是负载均衡器IP地址,而不是客户端IP:

var clientIpAddress = HttpContext.Connection.RemoteIpAddress.ToString();

我已经尝试了我能在这个网站和文档上搜索到的所有东西,但似乎都不起作用。我也尝试过使用HttpContext.Request.Headers["X-Forwarded-For"],它返回null / empty。

我们的运维团队表示,该IP没有被均衡器修改,应该在x-Forwarded-For头部的值中。为什么负载均衡器返回的是它的IP地址,而不是客户端的IP地址?

EN

回答 2

Stack Overflow用户

发布于 2021-01-29 11:06:55

您可以尝试使用此方法获取客户端IP地址:

1.添加Microsoft.AspNet.HttpOverrides包。

2.n您的configure()方法添加以下代码。

代码语言:javascript
复制
app.UseOverrideHeaders(new OverrideHeaderMiddlewareOptions
 {
    ForwardedOptions = ForwardedHeaders.XForwardedFor | 
                       ForwardedHeaders.XForwardedProto
 });
票数 0
EN

Stack Overflow用户

发布于 2021-01-29 10:30:13

在X-Forwarded中,您将获得客户端ip,proxy1 & proxy2.

获取客户端/用户IP的第一项,第一项是原始客户端IP

代码语言:javascript
复制
HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new 
char[] { ',' }).FirstOrDefault()
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65947201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档