我在appharbor上部署了一个ASP.NET应用程序。手动导航到其https:// url工作正常,但我想仅使用HTTPS。也就是说,如果我收到HTTP请求,请重定向到HTTPS。
有两种方法可以实现这一点,我知道:(1)使用web.config,由于X-Forwarded-Proto标头被appharbor上的负载均衡器剥离而无法正常工作(?)或(2)制作自定义httpattribute,如here
所示不幸的是,这两种方法都不适合我 - 两者都给我一个重定向循环:(。我能找到的所有答案都相当陈旧,在appharbor / asp.net上有什么改变我应该知道吗?
提前致谢。
答案 0 :(得分:2)
您是否在应用程序中使用MVC?该属性是为它准备的。
如果它只是普通的ASP.NET,您可以使用HTTP Modules或Global.asax来达到同样的效果。
RequireHttpsAttribute
by Rune应该有效。我在AppHarbor上使用ServiceStack,但是基于Rune的代码使用的属性。它今天仍在使用。
AppHb的负载均衡器将设置X-Forwarded-Proto
标头以匹配传入协议方案(http或https),因为来自负载均衡器的流量会转发到应用程序的IIS实例作为HTTP(因此原始方案丢失)。