我在Amazon EC2上的某些IIS服务器中使用MVC5,在Amazon Elastic Load Balancer后面。 IIS服务器仅运行HTTP协议,ELB转换为HTTPS。
IIS服务器不知道用户是否通过HTTPS访问,因此我有一个重写规则检查" X-Forwarded-Proto"标头将用户重定向到HTTPS。
不幸的是,当需要登录时,MVC / IIS会将用户重定向到HTTP中的登录页面。
如果我使用像http://www.redirect-checker.org/这样的工具查看我的网站,我会得到以下类型的结果:
301永久移动(我的网址重写规则)
302 Found(需要登录的重定向 - >为什么要使用HTTP?)
http://example.com/Account/Logon?ReturnUrl=%2F
301永久移动(再次我的网址重写规则)
https://example.com/Account/Logon?ReturnUrl=%2F
200 OK
我错过了什么吗?
我是否可以配置login-redirect来保留协议,从而消除其中一个重定向?
更好的是,我可以以某种方式在登录重定向规则之前并强制使用HTTPS,以便只有一个重定向吗?
非常感谢!
附录 我查看了像" RedirectToAction"发送地址,如" / Index2",而不是整个" http://example.com/Index2"。这很好,所以它保留了用户协议。
答案 0 :(得分:0)
假设您正在使用ASP.NET表单身份验证,请查看web.config
Authentication
配置,并将requireSsl="true"
添加到<forms>
元素,如下所示:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" requireSSL="true" />
</authentication>