【微服务部署】04-ForwardedHeaders

文章目录

    • 1. ForwardedHeaders
      • 1.1 场景
      • 1.2 关键的HTTP头
      • 1.3 核心处理要点

1. ForwardedHeaders

1.1 场景

  • 获取用户IP
  • 获取用户请求的原始URL

1.2 关键的HTTP头

  • X-Forwarded-For
  • X-Forwarded-Proto
  • X-Forwarded-Host

1.3 核心处理要点

  • 设置PathBase
  • 设置ForwardedHeaders中间件
  • 设置受信任的网关或代理的IP段
public void ConfigureServices(IServiceCollection services)
{
	...
	 services.Configure<ForwardedHeadersOptions>(options =>
     {
     	// 默认情况下ForwardedHeadersOptions有默认的设置和代理,这里要清除掉
          options.KnownNetworks.Clear();
          options.KnownProxies.Clear();
          options.ForwardedHeaders = ForwardedHeaders.All;// 允许输出所有类型头
      });
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
	if (Configuration.GetValue("USE_PathBase", false))
    {
           app.Use((context, next) =>
           {
               context.Request.PathBase = new PathString("/mobile");
               return next();
           });
     }

	if (Configuration.GetValue("USE_Forwarded_Headers", false))
    {
         app.UseForwardedHeaders();
     }
     // 通过上述两段代码就可以使应用程序正确感知到用户的原始响应,默认情况下应用程序是没有开启这两段设置的
}


// 控制器测试
[HttpGet]
public IActionResult ShowRequestUri()
 {
     return Content(Request.GetDisplayUrl());
 }

 [HttpGet]
 public IActionResult ShowHeaders()
 {
     var sb = new System.Text.StringBuilder();
     foreach (var item in Request.Headers)
     {
         sb.AppendLine($"{item.Key}:{item.Value}");
     }

     return Content(sb.ToString());
 }

UseForwardedHeaders 作用是将当前的请求X-Forwarded-Header应用到HTTP Context上,作用是是应用程序在组装当前的请求地址时使用到正确的地址

通过以上设置,应用程序输出真实的请求地址,网关中不需要设置文章来源地址https://uudwc.com/A/BrYG4

原文地址:https://blog.csdn.net/Tiger_shl/article/details/132569441

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年08月30日 11:19
STM32F4X 窗口看门狗 WWDG
下一篇 2023年08月30日 11:20