RequireHttpsAttribute with .NET Core RC2 导致 Azure 上的 HTTP 302 重定向循环
RequireHttpsAttribute with .NETCore RC2 causes HTTP302 redirect loop on Azure
我一直在尝试使用设置了 RequireHttpsAttribute 的 .NETCore RC2 Web 应用程序在 Azure 上运行,但我遇到了问题。
为了消除我在代码中引入的问题的可能性,我将内容减少到最低限度并使用 "out of box" VS2015 .NETCore RC2 模板重新创建它。
如果我部署标准的 VS2015 .NETCore RC2 Web 应用程序,网站运行良好。如果我随后将 [RequireHttps] 添加到控制器,它在本地工作正常,但在 Azure 上它会导致 HTTP302 重定向循环。这似乎是自 RC1 以来发生的变化,因为 RequireHttpsAttribute 在带有 RC1 的 Azure 中工作正常。
这里有一个类似的问题:,但不清楚问题是在谈论RC1还是RC2(我实际上怀疑是RC2),但是唯一的答案仅适用于RC1。
这里有一个关于此属性的类似问题,导致 AWS 上的重定向循环: 但那是 MVC4,还提到了 Azure 未使用的 header。
目前在 Azure 和 ASP.NET Core RC2 中有一个 bug,它与 Kestrel 和 IIS 的连接方式以及表明它是否为 HTTPS 请求的 HTTPS header 有关。
我知道它可能很快就会在 RTM 上得到解决,因为这个错误被标记为完成。
我们所做的解决方法是使用 web.config to make a permanent redirect from any HTTP request to HTTPS. We use the dotnet-transform 包仅在发布时插入重定向(因此在本地开发环境中它不适用)。如果您需要它作为 FYI,这是可选的。
您可以通过向 Startup.cs 中的 ConfigureServices 添加以下行来解决此问题(并添加 "using Microsoft.AspNetCore.HttpOverrides;")
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.XForwardedProto;
});
我一直在尝试使用设置了 RequireHttpsAttribute 的 .NETCore RC2 Web 应用程序在 Azure 上运行,但我遇到了问题。
为了消除我在代码中引入的问题的可能性,我将内容减少到最低限度并使用 "out of box" VS2015 .NETCore RC2 模板重新创建它。
如果我部署标准的 VS2015 .NETCore RC2 Web 应用程序,网站运行良好。如果我随后将 [RequireHttps] 添加到控制器,它在本地工作正常,但在 Azure 上它会导致 HTTP302 重定向循环。这似乎是自 RC1 以来发生的变化,因为 RequireHttpsAttribute 在带有 RC1 的 Azure 中工作正常。
这里有一个类似的问题:
这里有一个关于此属性的类似问题,导致 AWS 上的重定向循环: 但那是 MVC4,还提到了 Azure 未使用的 header。
目前在 Azure 和 ASP.NET Core RC2 中有一个 bug,它与 Kestrel 和 IIS 的连接方式以及表明它是否为 HTTPS 请求的 HTTPS header 有关。
我知道它可能很快就会在 RTM 上得到解决,因为这个错误被标记为完成。
我们所做的解决方法是使用 web.config to make a permanent redirect from any HTTP request to HTTPS. We use the dotnet-transform 包仅在发布时插入重定向(因此在本地开发环境中它不适用)。如果您需要它作为 FYI,这是可选的。
您可以通过向 Startup.cs 中的 ConfigureServices 添加以下行来解决此问题(并添加 "using Microsoft.AspNetCore.HttpOverrides;")
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders = ForwardedHeaders.XForwardedProto;
});