【问题标题】:Force HTTPS on Appharbor在 Appharbor 上强制使用 HTTPS
【发布时间】:2015-06-25 14:09:51
【问题描述】:

相关问题:here - here

我在 appharbor 上部署了一个 ASP.NET 应用程序。手动导航到其 https:// 网址可以正常工作,但我想使用 HTTPS。也就是说,如果我收到 HTTP 请求,则重定向到 HTTPS。

据我所知,有两种方法可以实现这一点:(1) 使用 web.config ,由于 X-Forwarded-Proto 标头被 appharbor 上的负载均衡器剥离 (? ) 或 (2) 制作自定义 httpattribute,如图所示 here

不幸的是,这两种方法都不适合我 - 两者都给了我一个重定向循环:(。我能找到的所有答案都相当老了,我应该注意 appharbor/asp.net 上的任何变化吗?

提前致谢。

【问题讨论】:

    标签: c# asp.net asp.net-mvc https appharbor


    【解决方案1】:

    您是否在应用程序中使用 MVC?该属性是为它设计的。

    如果只是普通的 ASP.NET,你可以使用 HTTP ModulesGlobal.asax 来达到同样的效果。

    RequireHttpsAttribute by Rune 应该可以工作。我在 AppHarbor 上使用 ServiceStack,但基于 Rune 代码中的属性。它今天仍在使用。

    AppHb 的负载平衡器将设置 X-Forwarded-Proto 标头以匹配传入协议方案(http 或 https),因为来自负载平衡器的流量作为 HTTP 转发到应用程序的 IIS 实例(因此原始方案丢失)。

    【讨论】:

    • 我正在使用 MVC,是的。我真的不确定我做错了什么。我复制/粘贴了 Rune 的代码,并将其重命名为 MyRequireHttpsAttribute 然后我在我的一个控制器的所有方法之上添加了 [MyRequireHttpsAttribute]。现在收到有关重定向过多的错误
    • 您是在自己的代码中调用重定向自己,还是只调用属性? RequireHttpsAttribute 在您的请求期间肯定会受到影响吗?
    • 我将属性放在了我的控制器类的顶部,而不是单独的方法的顶部。此外,我将属性从“App_Start”折叠移动到它自己的文件夹。这似乎解决了我的问题,我现在总是使用 https 连接。不过,我不确定我是否完全理解为什么。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2019-07-09
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2019-05-25
    相关资源
    最近更新 更多