.NET Core-RequireHttpsAttribute导致在具有Apache2的Ubuntu上出现ERR_TOO_MANY_REDIRECTS

Rob*_*son 1 c# https redirect asp.net-core

如果我按照官方文档使用.NET Core 2.0实施HTTPS,则该网站无法加载,并显示错误ERR_TOO_MANY_REDIRECTS。

重现步骤:

  1. 创建新的.NET Razor应用程序:dotnet新的razor -o aspnetcoreapp
  2. 从此处详细介绍的文档中添加两个代码片段:https ://docs.microsoft.com/zh-cn/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.0
  3. 部署到在Ubuntu 17.10上运行的Apache2(未在较早版本上进行测试),其中conf使用以下代码将连接传递到Kestrel服务器:

ProxyPreserveHost On ProxyPass / http://127.0.0.1:5001/ ProxyPassReverse / http://127.0.0.1:5001/

如果删除了第2步中的代码,则该网站可以通过HTTP或HTTPS正常运行(但显然不会重定向),但是如果添加了此代码,则该站点无法通过HTTP或HTTPS加载ERR_TOO_MANY_REDIRECTS。似乎方法已随.NET Core 2.1更改,但尚未发布。

Chr*_*att 6

您已将passthrough设置为http,而不是https。这里的Apache作为反向代理运行,因此它只是将请求转发到您的直通服务器,该服务器将始终http根据此处的配置进行传递。然后,由于将ASP.NET Core应用配置为需要HTTPS,因此它将重定向,从而导致新请求命中Apache,然后再次通过转发http

总之,您需要直通https,而不是http。或者,您可以从ASP.NET Core应用程序中删除仅HTTPS要求,而在Apache中强制实施HTTPS。