2010-08-04 35 views
5

在頁面加載中,如果您執行Response.Cookies.Add(...,立即在下一行中,您可以通過Request.Cookies訪問該cookie(...爲什麼在設置使用Response之後Cookie立即可用於請求?

我知道在封面下,cookie被添加到Request.Cookies by .net,但原始請求從未擁有該cookie。

如果我說的是正確的,爲什麼這樣呢?不應該在下面的請求中提供cookie嗎?不應該直接訪問Request.Cookies(...是空的?)

回答

6

你是對的,ASP.NET在幕後做了這樣的事情:

後您使用 HttpResponse.Cookies集合添加一個cookie,該 餅乾是 HttpRequest.Cookies收集立即可用,即使 如果響應尚未發送到 客戶端。

- HttpRequest.Cookies page MSDN上

爲什麼會這樣呢?有人猜測,這是因爲這就是開發人員期望它的工作原理。

+0

作爲一個說明,這是一個關於PHP的常見抱怨...使用'setcookie'不會將所述cookie添加到'$ _COOKIE'全局。 – Powerlord 2010-08-04 17:09:03

+1

其實這一直讓我瘋狂。我需要過期一個cookie並添加一個新的cookie,但是這種行爲意味着我不僅要過期而且還要過期新的cookie。不,我不認爲這是一個公平的評論,建議開發者期望它以這種方式工作。我是一名開發人員,在編寫代碼時儘量避免產生副作用。但是,是的,鏈接到文檔非常寶貴,謝謝。 – 2012-05-16 04:30:23

相關問題