Asp.net

如何在 http 和 https 之間共享 asp.net 會話

  • September 2, 2016

我讀到在 https 連接下執行的頁面無法與在正常 http 下執行的另一個頁面(或相同的頁面)共享 InProc 會話(基於 cookie)。我的站點在 Server 2003、IIS 6 和 .Net 2.0 上執行。

經過一些實驗後,似乎在通過 https 連接時在會話中儲存數據的頁面可以隨後訪問數據,即使在純 http 下執行也是如此。

那麼,是否有可能或者我應該去尋找 SSL 配置中的缺陷?

來自MSDN

當使用者在安全區域和公共區域之間來回移動時,ASP.NET 生成的會話 cookie(或 URL,如果您啟用了無 cookie 會話狀態)以純文字形式與它們一起移動,但身份驗證 cookie 永遠不會通過未加密的 HTTP 傳遞只要設置了 Secure cookie 屬性,就可以連接。

Secure所以基本上,如果屬性設置為,cookie 可以通過 HTTP 和 HTTPS 傳遞false

我通過將其添加到我的Global.asax文件中避免了這個問題:

void Session_Start(object sender, EventArgs e) 
{
   if (Request.IsSecureConnection) Response.Cookies["ASP.NET_SessionID"].Secure = false;
}

這意味著如果會話 cookie 是通過 HTTP 創建的,它只能通過 HTTPS 訪問。

引用自:https://stackoverflow.com/questions/567535