2012-12-17 86 views
1

目前我有一個具有兩個頁面的登錄和默認Web應用程序。正在讀取和寫入HTTP標頭

我一直在不知疲倦地嘗試寫入2個GUID,當在登錄頁面後面的代碼中執行登錄過程時,它們會返回到HTTP標頭中。然後我想在默認頁面的頁面加載中讀出這些。

我沒有經驗,在C#中的HTTP頭,我嘗試更早以下信息才能從登錄沒有成功添加值....

Request.Headers.Add("GUID", strGUID); 
Response.Headers.Add("GUID", strGUID); 

在默認頁面我檢索值試圖用...

strGUID = Response.Headers.Get("GUID"); 

然後終於清除所有自定義廢話我已經堆到它的頭,我試圖用...

Response.Headers.Clear(); 

我一直在環顧網上,但我似乎無法找到任何關於這個或任何關於如何實現類似任務的分步說明的教程。

+1

你究竟想要做什麼?這聽起來像你想要一個地方爲一個請求存儲值。爲此,我建議查看['HttpContext.Current.Items'](http://www.4guysfromrolla.com/articles/060904-1.aspx) – Earlz

+0

基本上我試圖放置一些數據(令牌/ GUID )放在登錄頁面的標題中,以便在缺省頁面的頁面加載中,我可以檢查其有效性,並在用戶無效時重定向用戶。 –

回答

4

由於HTTP是無狀態協議,因此無法在使用HTTP標頭的請求之間共享數據。我沒有發現你的代碼本身有什麼問題,但是沒有規則說在一個響應中發送給客戶端的HTTP頭(login.aspx)應該在下一個請求中發送回服務器(default.aspx )。即使在執行從login.aspx到default.aspx的重定向時,這仍然是正確的,因爲重定向本身與其後的頁面視圖是分開的。

您正在尋找的內容是持續多於一個請求的存儲。爲此,您可以使用cookie將值存儲在瀏覽器中:

// Set in login.aspx 
Response.Cookies.Add(new HttpCookie("Guid", Guid.NewGuid()) 

// Read in default.aspx 
HttpCookie token = Request.Cookies["Guid"]; 

...或會話存儲將值存儲在服務器上。

// Set in login.aspx 
Session["Guid"] = Guid.NewGuid(); 

// Read in default.aspx 
Guid token = (Guid) Session["Guid"]; 

您可以使用一個工具,如Fiddler檢查HTTP流量,以便更好地理解標題是如何HTTP傳輸。