簡體   English   中英

C#在客戶端上通過HTTPS維護會話

[英]C# maintaining session over HTTPS on the client

我需要登錄網站並執行操作。 該網站基於REST,因此我可以輕松登錄(登錄信息作為查詢字符串包含在URL中,因此我不需要設置憑據):

CookieContainer cookieJar = new CookieContainer();

HttpWebRequest firstRequest = (HttpWebRequest) WebRequest.Create(loginUrl);
firstRequest.CookieContainer = cookieJar;
firstRequest.KeepAlive = true;
firstRequest.Method = "POST";
HttpWebResponse firstResponse = (HttpWebResponse)firstRequest.GetResponse();

這有效並且讓我登錄。我得到一個cookie以維持會話並將其存儲在上面顯示的cookieJar中。 然后我做第二個請求,例如:

HttpWebRequest secondRequest = (HttpWebRequest) WebRequest.Create(actionUrl);
secondRequest.Method = "POST";
secondRequest.KeepAlive = true;
secondRequest.CookieContainer = cookieJar;
WebResponse secondResponse = secondRequest.GetResponse();

我確保將cookie分配給新請求。 但由於某些原因,這似乎不起作用。 我收到一個錯誤,告訴我“我的會話已超時或已過期”,這是一個接一個地完成,所以它不是時間問題。

我已經使用Fiddler來檢查HTTP頭,但我發現這很困難,因為這是HTTPS。 (我知道我可以解密它,但似乎效果不好。)

我可以把我的URL用於這個休息服務並將它們粘貼到firefox中,一切正常,所以它一定是我做錯了而不是連接的另一端。

我對HTTPS不太熟悉。 我是否需要做其他事情來維持我的會話? 我認為cookie就是它,但也許我需要在這兩個請求中保留其他東西?

這是我發送第一個請求時返回的標題(除了我更改cookie以保護無辜者!):

X-DB-Content-length=19
Keep-Alive=timeout=15, max=50
Connection=Keep-Alive
Transfer-Encoding=chunked
Content-Type=text/html; charset=WINDOWS-1252
Date=Mon, 16 Nov 2009 15:26:34 GMT
Set-Cookie:MyCookie stuff goes here
Server=Oracle-Application-Server-10g

任何幫助將不勝感激,我的想法已經不多了。

在解密來自我的程序的HTTP流量后,我終於得到了它的工作。

我要回來的cookie沒有列出Path變量。 因此.NET采用當前路徑並將其指定為cookie上的路徑,包括當前頁面。 即:如果它位於http://mysite/somepath/somepage.htm ,它將設置cookie路徑= / somepath / somepage.htm。 這是一個錯誤,因為它應該分配給“/”,這是所有Web瀏覽器的功能。 (希望他們解決這個問題。)

注意到這一點后,我抓住了cookie並修改了路徑屬性,現在一切正常。

任何有這樣問題的人都會查看Fiddler。 .NET使用Windows證書存儲區來解密來自程序的http流量,您需要按照以下說明操作: http//www.fiddler2.com/Fiddler/help/httpsdecryption.asp 您還需要在Fiddler的Options \\ HTTPS選項卡下打開解密。

來自MSDN

當用戶在安全區域和公共區域之間來回移動時,ASP.NET生成的會話cookie(如果您啟用了無cookie會話狀態,則為URL)以純文本格式移動,但是身份驗證cookie永遠不會通過未加密的HTTP傳遞連接,只要設置了安全cookie屬性

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

另請參閱如何在http和https之間共享asp.net會話

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM