HttpWebRequest / HttpWebResponse和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”]我自己是我的解决方案。 不是我喜欢的,但它有效。 我只是使用正则表达式分解错误的逗号来消除问题。

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

谢谢。 🙂

这就是cookie的工作方式。 ‘正确’的网络浏览器完全相同,就像最初在古老的Netscape cookies doc中指定的那样: http : //cgi.netscape.com/newsref/std/cookie_spec.html

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