簡體   English   中英

HttpWebRequest / HttpWebResponse和cookies的問題

[英]Problems with HttpWebRequest/HttpWebResponse and cookies

我遇到了HttpWebRequest / HttpWebResponse和cookies / CookieContainer / CookieCollection的麻煩。 問題是,如果Web服務器不在cookie中發送/使用“路徑”,Cookie.Path等於請求URI的路徑部分而不是“/”或在我的應用程序中為空。 因此,這些cookie不適用於整個域,它實際上在適當的Web瀏覽器中。 任何想法如何解決這個問題?

提前致謝

啊,我明白你的意思了。 通常,瀏覽器真正做的是將包含文檔的文件夾作為路徑; 對於'/login.php',它將是'/',因此它可以在整個域中有效地工作。 '/potato/login.php'將僅限於'/ potato /'; 任何帶有尾隨路徑信息的部分(例如'/login.php/')都行不通。

在這種情況下,Netscape規范可能被認為是錯誤的,或者至少誤導了聲稱路徑默認為當前文檔路徑...取決於您在那里讀取“路徑”的具體程度。 但是,瀏覽器行為與原始Netscape版本一致。 Netscape從來沒有那么擅長編寫規范......

如果.NET的HttpWebRequest確實將CookieContainer.Path默認為當前文檔的整個路徑,我會針對它提交一個錯誤。

不幸的是,現實世界中的行為實際上並沒有在標准文檔中進行描述......有RFC 2965,它確實讓路徑正確,但做出了其他一些不能代表真實瀏覽器行為的變化,因此並不完全可靠無論是。 :-(

好像我不能繼續使用默認的cookie處理程序,所以我很生氣,我很難做到。 哈哈。 所以解析response.Headers [“Set-Cookie”]我自己是我的解決方案。 不是我喜歡的,但它有效。 我只是使用正則表達式拆分錯誤的逗號來消除問題。

如果我能在這里給出分數,我會給你一些,因為你給了我有價值的信息。 我也會投票,如果可以的話(需要更高的代表得分),但由於這種行為可能是一個錯誤,正如你所提到的,我會接受這個作為答案。

謝謝。 :)

這就是cookies的工作方式。 “正確的”網絡瀏覽器完全相同,就像最初在古代Netscape cookie文檔中指定的那樣: http//cgi.netscape.com/newsref/std/cookie_spec.html

Web應用程序必須始終設置“路徑”(通常為“/”)。

暫無
暫無

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

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