1

我有一个只能通过 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 的情况下可以访问?

4

0 回答 0