2009-09-09 36 views
4

在配置文件中我有以下設置如果在客戶機上禁用cookie,會話存儲在哪裏?實際存儲在會話中的是什麼?

的sessionState模式=「InProc方式」無Cookie =「假」

這是否表明會話ID在餅乾stroed?如果是,那麼它是如何挑選併發送到服務器的,以及它如何在回發中進行驗證。

如果在我的瀏覽器中禁用了cookies,會發生什麼情況,會話(sessionid和會話變量)是否仍會創建?

哪裏(默認路徑)是爲會話默認創建和存儲的cookie,我可以更改路徑嗎?

什麼格式和類型的數據存儲在會話的cookie中?

如果我在會話中存儲類對象,那麼實際存儲在cookie中的是什麼?

另外,如果我使用身份驗證模式作爲cookie的形式,那麼如果Cookie在瀏覽器中被禁用會發生什麼?

+0

我知道,如果我設置cookie的,以真,那麼會話ID被附加到URL,但我只是想知道,如果cookiesless值設置爲false,並且客戶端已禁用他的機器上的cookie會使應用程序正常運行或將會脫離。 我個人覺得應用程序不會像喬什斯托多拉回答的那樣工作。 – Panache 2009-09-09 19:40:55

+0

看看我的帖子底部的註釋。在一句話中,如果您完全禁用cookie並且仍然期望會話在那裏,並且不啓用無Cookie會話,則該應用會中斷。例如,我實際上運行了一個測試,在我的一個應用程序中,我只是繼續獲取​​登錄屏幕。 – 2009-09-09 22:22:08

+1

我創建了一個示例應用程序,將會話屬性Cookieless設置爲false,並在瀏覽器中禁用cookie,並測試該應用程序正常工作。會話值在哪裏存儲? – Panache 2009-09-19 18:52:18

回答

-5

每個請求創建

+0

-1:這絕對不是我對這裏發生的事情的理解。 – 2009-09-09 18:44:12

+0

-1:根本沒有創建會話。誰在投票? – 2009-09-09 19:12:14

+0

會話已創建,但由於在下一個請求中未發送帶有sessionId的cookie並且應用程序無法找到您的sessionId,它將創建一個新的會話對象。嘗試Response.Write(Session.SessionID)在您的網頁並關閉cookie。 – 2009-09-10 05:10:49

0

我的猜測是由客戶端的每個請求將被看作是服務器的新會話新會話。

16

會話cookie是一個特殊的非持久性cookie。它只存儲在內存中,所以在大多數情況下即使禁用了cookies,它仍然可以正常工作。

也有可能使一些所謂地方的SessionID嵌入在URL Cookie的sesssions,像這樣:

http://yourserver/folder/(這裏加密的會話ID)/default.aspx

下面是一個MSDN鏈接文章更多的細節:http://msdn.microsoft.com/en-us/library/aa479314.aspx

注:能夠完全阻止會話cookie。例如,在IE8中,我剛進入工具> Internet選項>隱私。當我將滑塊調高至「高」或更高時,我的網站從未超越登錄屏幕,因爲會話Cookie被阻止 - 事實上,Josh Stodola在下面說過,在這種情況下,會話甚至不會在服務器上創建。

但是,明白這種行爲有效地打破了互聯網。因此,除非你建立一個針對陰謀論者的網站,在我看來(以及世界上大多數最大的網站的觀點),沒有必要迎合不按正常規則玩的很小比例的用戶。

對他們來說,互聯網並不會按照它應有的方式工作。

+0

大聲笑...你的意思是「無Cookie會話」? – 2009-09-09 18:43:37

+0

已經修復,很慢! :) – 2009-09-09 18:47:42

+0

在IE6到IE8中,如果您轉到隱私>高級,並選中「覆蓋自動cookie處理」,在第一方Cookie下選擇「阻止」,並選擇「始終允許會話cookie」 。但是,如果你這樣做,會有很多網站無法正常工作。 – 2009-09-09 19:16:30

0

如果您恰好從瀏覽器中獲取請求標頭,則可以看到SessionID是標頭的一部分。這由服務器用來確定哪個會話屬於哪個用戶。

0

而不是通過cookie傳遞會話標識,它通常作爲查詢字符串在URL中傳遞,或作爲自定義HTTP標頭傳遞。但是,對於您描述的場景,您的用戶將永遠不會獲得會話,因爲您已將Cookie設置爲false。

+0

我已經創建了一個測試應用程序,其中我已將Cookieless設置爲false,並且我已在瀏覽器中禁用了Cookie。認證模式設置爲表單。猜猜應用程序仍然有效嗎? – Panache 2009-09-12 13:54:02

0

我沒有實現這個人。但它應該是這樣的:

由於Cookiless = false在web.config文件中並且瀏覽器已禁用了cookie,當第一次請求頁面時,HTTP模塊將檢查表單身份驗證cookie。現在它將是空的,發送用戶登錄頁面。現在,當第二次請求網站上的任何頁面時,它將再次找到表單身份驗證cookie爲空並將用戶發送到登錄頁面。因此,對於用戶需要創建新會話的每個請求。

0

不,如果cookies被禁用,會話將不起作用。

如果你想使用會話時cookie被禁用,那麼你可以通過URL的會話。

+1

這不完全準確,但在這種情況下可能已足夠 – 2012-11-19 15:35:02

+0

您在第一條語句@Subhash中完全錯誤! – 2013-09-06 22:42:23

0

它直接存儲在瀏覽器

0

有兩種方式會話狀態能夠存儲的唯一ID客戶端服務器會話相關聯;通過在客戶端上存儲HTTP cookie或在URL中編碼會話ID。

會話模式=「InProc」是將會話狀態信息存儲在Web服務器中的默認模式。然而,當你說cookieless =「false」時,你說要在cookie中存儲唯一的ID。此會話在創建會話時創建,因此在回發時會從Cookie中提取ID。如果Cookie在瀏覽器中被禁用,則會話仍將被創建,並且此ID將沿着URL傳遞。

您可以通過瀏覽器設置 - >隱私 - >內容設置 - >所有Cookie和網站數據 - >存儲網站名稱來瀏覽Cookie。可能您會在%userprofile%\ AppData \ Roaming \ Microsoft \ Windows \ Cookies,但可能會因操作系統而異。

在cookies中,您通常會存儲一小塊不敏感的個人信息。如果您需要存儲敏感數據(如用戶名和密碼),最好對這些數據進行加密。

在cookie中,您通常會存儲有關用戶的信息。欲瞭解更多詳情,請訪問網址 http://msdn.microsoft.com/en-us/library/system.web.configuration.sessionstatesection.cookieless(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/ff647070.aspx#pagexplained0002_cookielessforms