C# HttpWebRequest/HttpWebResponse和Cookie存在问题

C# HttpWebRequest/HttpWebResponse和Cookie存在问题,c#,.net,C#,.net,我在HttpWebRequest/HttpWebResponse和cookies/CookieContainer/CookieCollection方面遇到问题。 问题是,如果web服务器在cookie中不发送/使用“路径”,cookie.path将等于请求URI的路径部分,而不是“/”或在我的应用程序中为空。 因此,这些cookie不适用于整个域,而在适当的web浏览器中实际适用。 有没有办法解决这个问题 提前感谢这就是饼干的工作方式。”正确的“web浏览器”与古代Netscape cookie

我在HttpWebRequest/HttpWebResponse和cookies/CookieContainer/CookieCollection方面遇到问题。 问题是,如果web服务器在cookie中不发送/使用“路径”,cookie.path将等于请求URI的路径部分,而不是“/”或在我的应用程序中为空。 因此,这些cookie不适用于整个域,而在适当的web浏览器中实际适用。 有没有办法解决这个问题


提前感谢

这就是饼干的工作方式。”正确的“web浏览器”与古代Netscape cookies文档中最初指定的完全相同:


Web应用程序必须始终有效地设置“路径”(通常是“/”)。

啊,我明白你的意思。一般来说,浏览器真正做的是将包含文档的文件夹作为路径;对于“/login.php”,这将是“/”,因此它将在整个域中有效地工作/potato/login.php'将被限制为'/potato/';任何带有尾随路径信息部分(例如“/login.php/”)的内容都无法工作

在这种情况下,Netscape规范声称路径默认为当前文档路径可能被认为是错误的或至少是误导性的。。。这取决于你对“路径”的准确解读。然而,浏览器的行为与最初的Netscape版本是一致的。Netscape从来没有那么擅长编写规范

如果.NET的HttpWebRequest确实将CookieContainer.Path默认为当前文档的整个路径,我会针对它提交一个bug


不幸的是,现实世界中的行为目前并没有在标准文档中描述。。。还有RFC 2965,它确实正确地处理了路径问题,但做了一些其他更改,这些更改并不代表真实世界的浏览器行为,因此也不完全可靠-(

似乎我无法进一步使用默认的cookie处理程序,所以我很恼火,我用了很艰难的方法。哈哈。所以解析response.Headers[“Set cookie”]是我自己的解决方案。这不是我喜欢的解决方案,但它很有效。我简单地解决了使用正则表达式在错误的逗号处拆分的问题

如果我能在这里给出分数,我会给你一些,bobince,因为你给了我有价值的信息。如果可以的话,我也会投赞成票(需要更高的代表分数),但正如你提到的,由于这种行为可能是一个错误,我会接受这一回答


谢谢。:)

谢谢你,波宾塞。我明白了,但这对我来说有点奇怪,因为我所说的这个网站没有设置“路径”,至少在InternetExplorer和Firefox中,它似乎仍然可以在整个领域内工作。有什么想法吗?谢谢你发现了这个bug,并让它变得很好用!:-)