在你的情况[RequireHttp]
如果你明确了登录cookie属性可能是OK - 或者你会在通过纯文本发送。这可能比避免进一步HTTPS调用的微小成本值得多。所有这些都是关于回收问题的,其他用户在阅读您的问题时可能会认为在登录后下载到HTTP是可以的,但这通常是错误的。
的[RequireHttps]
属性可以在控制器类型或操作方法可以用来表示“这只能通过SSL进行访问。”对控制器或操作的非SSL请求将被重定向到SSL版本(如果是HTTP GET)或被拒绝(如果是HTTP POST)。您可以覆盖RequireHttpsAttribute并根据需要更改此行为。没有[RequireHttp]
属性内置,相反,但你可以很容易地让自己的,如果你想要的。
也有过载的Html.ActionLink()
其采取的协议参数;您可以明确指定“http”或“https”作为协议。一个这样的过载就是MSDN documentation。如果您不指定协议或者调用没有协议参数的过载,则认为您希望链接与当前请求具有相同的协议。
我们没有在MVC一个[RequireHttp]
属性的原因是,有没有真正带来多少好处吧。这不像[RequireHttps]
那样有趣,它鼓励用户做错事。例如,许多网站通过SSL登录,你登录后重定向到HTTP,这是绝对错误的事情做。您的登录cookie与您的用户名+密码一样秘密,现在您可以通过电报以明文形式发送它。此外,在MVC管道运行之前,您已经花时间执行握手并确保通道(这是造成HTTPS比HTTP更慢的原因),因此[RequireHttp]
不会使当前请求或未来请求变得很多更快。
为什么您的其他网页“仅需要”http?是否真的很重要,只要需要https的页面被加密? – 2012-03-16 00:29:17
@Mystere Man:https严重降低了Web服务器的性能。在某些配置上它可能是一个大问题。 – 2012-07-03 02:45:59
@zespri - 在过去的日子里,https是一个重要的负载。今天,我向你保证,服务器在构建页面上做的工作要比对它进行加密更多。你说你宁愿让你的网站不安全,也不愿意处理轻微的负载增加。下面的Ricks指出,您已经通过https登录创建了负载,未来的请求不需要额外的处理。 – 2012-07-03 04:48:32