.NET Core - RequireHttpsAttribute在Ubuntu上使用Apache2导致ERR_TOO_MANY_REDIRECTS

时间:2018-04-25 17:54:27

标签: c# redirect asp.net-core https

如果我按照官方文档强制执行HTTPS,则使用.NET Core 2.0,网站无法加载错误ERR_TOO_MANY_REDIRECTS。

重现的步骤:

  1. 创建新的.NET Razor App: dotnet new razor -o aspnetcoreapp
  2. 从此处详述的文档中添加两个代码片段: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.0
  3. 部署到在Ubuntu 17.10上运行的Apache2(未在旧版本上测试),其中conf使用以下代码将连接传递给Kestrel服务器:
  4. 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的方法已经改变,但尚未发布。

2 个答案:

答案 0 :(得分:5)

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

长短,你需要直通到https,而不是http。或者,您可以从ASP.NET Core应用程序中删除仅HTTPS要求,而是在Apache中强制执行HTTPS。

答案 1 :(得分:0)

检查你的逻辑,应该有一个导致循环重定向的地方。如果你使用反向代理,检查HttpContext是否正确获得Https状态