为什么要缓存需要Https的登录页面,允许在没有ssl的情况下访问它?

时间:2012-12-17 05:12:36

标签: asp.net-mvc-3 caching https forms-authentication

我有一个只能通过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页面移除网址并按回车键,它会转到受保护的https//sitename.com/Account/LogOn

长话短说,删除[OutputCache(CacheProfile = "Long")]可以解决问题。 所以我的问题是,为什么缓存该页面会导致页面无法在没有ssl的情况下访问?

0 个答案:

没有答案