在你的情況[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