[英]Redirect to https through url rewrite in IIS within elastic beanstalk's load balancer
[英]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.