【发布时间】:2020-04-01 17:05:26
【问题描述】:
在 ASP.NET Core 中,Microsoft recommends 使用 HTTPS 重定向和 HSTS 中间件,而不是 IIS 中的重写规则,将所有 HTTP 请求重定向到 HTTPS。
从 DevOps 的角度来看,IIS 规则很容易跨应用程序实施。我们只是在部署期间将重写部分作为 Web.Config 的一部分注入,强制应用程序通过 HTTPS。但是由于中间件方法是代码本身的一部分,现在由各个应用程序团队来实现重定向。
我们有没有办法在应用程序之间强制执行 HTTPS 重定向,同时又不会偏离 Microsoft 的建议太远?
【问题讨论】:
-
在 IIS 上运行的 ASP.NET Core 仍支持 URL 重写模块。如果您已经将它用于其他目的,并且知道您将在 IIS 服务器上运行 ASP.NET Core,那么继续将其用于 HTTPS 重定向和 HSTS 实施应该不成问题。我将 Microsoft 的建议读为“您应该真正使用 HTTPS 重定向和 HSTS。实现这一目标的最简单方法是使用这些跨平台工作的内置方法。”对于大多数人来说,这比“如果你在 IIS 上,安装这个单独的模块,并编写更复杂的规则”更好的指导。
-
“在 ASP.NET Core 中,Microsoft 建议使用 HTTPS 重定向和 HSTS 中间件,而不是在 IIS 中使用重写规则将所有 HTTP 请求重定向到 HTTPS”。你从哪里得到这样的印象?显然,微软在那篇文章的注释部分所说的恰恰相反。
-
谢谢@JeremyCaney。这是有道理的,这正是我们现在要做的。
-
@LexLi,该说明讨论了反向代理配置,我没有将我们的进程内 IIS 服务器设置视为反向代理。因此问题。 Chris 和 Jeremy 的 cmets 都对我的理解有所帮助。
标签: asp.net-core iis