.NET Core 重定向中无法识别的参数类型 REMOTE_ADDR 和 HTTP_X_FORWARDED_FOR

Posted

技术标签:

【中文标题】.NET Core 重定向中无法识别的参数类型 REMOTE_ADDR 和 HTTP_X_FORWARDED_FOR【英文标题】:Unrecognized parameter types REMOTE_ADDR and HTTP_X_FORWARDED_FOR in .NET Core redirect 【发布时间】:2022-01-01 17:35:21 【问题描述】:

我正在尝试将在我们的 .NET Framework 网站上使用的以下重定向规则转换为在新的 .NET Core 构建中的重定向文件中工作。到目前为止我没有成功。 基本上,该规则不允许访问外部 IP 地址的特定路径,但该规则也允许访问子路径。 例如:/umbraco/ 被重定向到 404 页面,但 /umbraco/surface/.. 之类的路径是允许的。

以下是 .net 框架中的规则示例,它有效:

<rule name="Restrict Back Office URL" enabled="true" stopProcessing="true">
<match url="^umbraco($|/(?!([Ss]urface|[Aa]pi|[Ww]ebservices|[Pp]lugins|[Aa]pplication)))" />
<conditions logicalGrouping="MatchAll">
  <add input="REMOTE_ADDR" pattern="^10\.6\.*.*$" negate="true" />
  <add input="HTTP_X_FORWARDED_FOR" pattern="^10\.6\.*.*$" negate="true" />
  <add input="HTTP_X_FORWARDED_FOR" pattern="^12\.123\.12\.123$" negate="true" />
  <add input="HTTP_HOST" pattern="localhost" negate="true" />
  <!-- Use HTTP_X_FORWARDED_FOR if your server is behind a load balancer -->
</conditions>
<action type="Redirect" url="/error-404/" />

我已阅读,并将以下代码添加到 startup.cs,但到目前为止这并没有解决问题:

services.Configure<ForwardedHeadersOptions>(options =>
  
    options.ForwardedHeaders =
        ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto | ForwardedHeaders.All;
  );

app.UseForwardedHeaders();

如果能在 .NET CORE 构建中获得此类重定向的任何帮助和经验,我们将不胜感激。 谢谢你,亲切的问候

【问题讨论】:

【参考方案1】:

你需要考虑一些事情。现在可以在 Linux 中托管一个 Umbraco,因此 Windows IIS 规则可能不会直接映射。如果站点是 Linux 会发生什么,这些规则将不起作用:(

在vb9中你需要创建一个中间件,看看startup.cs

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-6.0

按照此处的建议映射规则

【讨论】:

以上是关于.NET Core 重定向中无法识别的参数类型 REMOTE_ADDR 和 HTTP_X_FORWARDED_FOR的主要内容,如果未能解决你的问题,请参考以下文章

绑定 .NET Core 无法识别的配置属性

Asp.net core HttpsRedirectionMiddleware 无法确定重定向的 https 端口

使用 ID 参数重定向到操作 - .Net Core Web App MVC

ASP.NET Core 3.1 图像 URL 错误代码 302 重定向

无法识别的配置参数“默认表访问方式”谷歌云

在 Visual Studio 2019 中调试时将输入重定向到 .NET Core 控制台应用程序