在您的情况下[RequireHttp]
,如果您清除登录 cookie,则属性可能没问题 - 或者您将以明文形式通过网络发送它。避免进一步的 HTTPS 调用的轻微成本可能比它值得做的工作更多。SO 都是关于回收问题的,其他阅读您的问题的用户可能会认为登录后下拉到 HTTP 是可以的,而这通常是错误的做法。
该[RequireHttps]
属性可用于控制器类型或操作方法,表示“只能通过 SSL 访问”。对控制器或操作的非 SSL 请求将被重定向到 SSL 版本(如果是 HTTP GET)或被拒绝(如果是 HTTP POST)。如果您愿意,您可以覆盖 RequireHttpsAttribute 并更改此行为。没有[RequireHttp]
内置的属性可以做相反的事情,但是如果您愿意,您可以轻松地制作自己的属性。
还有一些Html.ActionLink()
带有协议参数的重载;您可以明确指定“http”或“https”作为协议。这是有关此类重载的MSDN 文档。如果您未指定协议或调用没有协议参数的重载,则假定您希望链接具有与当前请求相同的协议。
我们[RequireHttp]
在 MVC 中没有属性的原因是它并没有太多好处。它不如 有趣[RequireHttps]
,而且它鼓励用户做错事。例如,许多网站通过 SSL 登录并在您登录后重定向回 HTTP,这绝对是错误的做法。您的登录 cookie 与您的用户名 + 密码一样保密,现在您通过网络以明文形式发送它。此外,在 MVC 管道运行之前,您已经花时间执行握手并保护通道(这是使 HTTPS 比 HTTP 慢的主要原因),因此[RequireHttp]
不会使当前请求或未来请求更快.