.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的主要内容,如果未能解决你的问题,请参考以下文章
Asp.net core HttpsRedirectionMiddleware 无法确定重定向的 https 端口
使用 ID 参数重定向到操作 - .Net Core Web App MVC