簡體   English   中英

重定向到AWS負載均衡器后面的IIS上的HTTPS在IE中不起作用

[英]Redirect to HTTPS on IIS behind an AWS Load balancer doesn't work in IE

我試圖在使用AWS上的Elastic Beanstalk托管的網站上強制使用HTTPS。 因為它在AWS上並且AWS Loadbalancer在IIS上插入了它自己的重定向規則,所以我不能使用Global Filter強制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 mvc,則可以在應用程序類中使用此代碼,而不是進行配置

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM