【问题标题】:Redirect to HTTPS on IIS behind an AWS Load balancer doesn't work in IE在 AWS 负载均衡器后面的 IIS 上重定向到 HTTPS 在 IE 中不起作用
【发布时间】:2016-11-23 09:35:36
【问题描述】:

我正在尝试在使用 AWS 上的 Elastic Beanstalk 托管的网站上强制使用 HTTPS。因为它在 AWS 上,并且 AWS 负载均衡器在 IIS 上插入了它自己的重定向规则,所以我不能使用全局过滤器来强制使用 HTTPS。如果我这样做,我会收到关于太多重写的错误。

相反,我必须使用 UrlRewrite 并从我的 web.config 传递一条规则,我正在使用从 SO 上的另一个答案中获得的规则。这与大多数强制 HTTPS 的答案非常相似

<rule name="HTTP to HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
        <add input="{HTTPS}" pattern="^OFF$" ignoreCase="true"/>
        <add input="{REMOTE_HOST}" pattern="localhost" negate="true" />
        <add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" />
        <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

此规则在 Safari 和 Chrome 中有效,但在 IE 中,用户第一次访问该站点时是 HTTP,直到他们单击链接,然后下一页是 HTTPS。这种行为还不错,但是我的索引上有一个表单,当您尝试在 HTTP 中提交它时,它会刷新页面并变为 HTTPS。之后表单提交工作。

提前感谢您的帮助

【问题讨论】:

    标签: asp.net amazon-web-services iis url-rewriting


    【解决方案1】:

    如果你使用的是asp.net mvc,你可以在你的应用程序类中使用这个代码而不是配置

    public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                //Enforce Https to the web app.
                GlobalFilters.Filters.Add(new RequireHttpsAttribute());
            }
        }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2018-12-04
    • 1970-01-01
    • 2017-07-07
    • 2012-03-24
    • 2016-10-14
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多