我有一个只能通过 https 访问的网站。一切正常,几周前我开始向某些部分添加缓存,所以我的登录操作如下所示:
[RequireHttps]
public class AccountController : Controller
{
[OutputCache(CacheProfile = "Long")]
public ActionResult LogOn()
{
return View();
}
...
}
我的 web.config 身份验证包含:
<forms loginUrl="~/Account/LogOn" timeout="2880" requireSSL="true" protection="All" />
一切似乎仍然正常,当您访问该站点时,它会将您带到 https 登录页面,即使您已将其输入为http//sitename.com
. 最近我注意到 ELMAH 记录了一堆请求的资源只能通过 SSL 访问。对于登录页面,我不知道为什么。
事实证明,在某些情况下,如果您尝试访问需要授权的页面,它会将您转发到http//sitename.com/Account/LogOn?ReturnUrl=%2f
非 https,但是如果您只是?ReturnUrl=%2f
从 url 中删除该页面并按 Enter,它会将您带到安全的https//sitename.com/Account/LogOn
.
长话短说,删除[OutputCache(CacheProfile = "Long")]
修复问题。所以我的问题是,为什么缓存该页面会导致页面在没有 ssl 的情况下可以访问?