0

我在 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/之类的工具中检查我的网站,我会得到以下类型的结果:

http://example.com/

301 永久移动(我的 URL 重写规则)

https://example.com/

302 Found(需要登录的重定向 -> 为什么要使用 HTTP?)

http://example.com/Account/Logon?ReturnUrl=%2F

301 永久移动(再次我的 URL 重写规则)

https://example.com/Account/Logon?ReturnUrl=%2F

200 好

我错过了什么吗?

我可以配置登录重定向以保持协议,消除这些重定向之一吗?

更好的是,我可以以某种方式在登录重定向规则之前并使其强制使用 HTTPS,以便只有一个重定向吗?

非常感谢!

附录: 我检查了像“RedirectToAction”这样的命令发送的地址像“/Index2”,而不是整个“ http://example.com/Index2 ”。这很好,所以它保留了用户协议。

4

1 回答 1

0

假设您使用的是 ASP.NET 表单身份验证,请web.config查看您的Authentication配置并添加requireSsl="true"<forms>元素中,如下所示:

<authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" requireSSL="true" />
</authentication>
于 2017-02-18T08:39:31.783 回答