【问题标题】:CookieException with CookieContainer: The 'Path' part of the cookie is invalid带有 CookieContainer 的 CookieException:cookie 的“路径”部分无效
【发布时间】:2013-04-04 07:33:22
【问题描述】:

我正在尝试设置 cookie 的路径,但总是收到错误消息:

CookieException: The 'Path'='/applogin' 部分 cookie 无效。

代码如下所示:

Cookie newCookie = new Cookie("JSESSIONID", session.SessionId, "/applogin", "domain.com");
newCookie.Secure = true;
webRequest.CookieContainer.Add(new Uri(@"https://domain.com"), newCookie);

然后在最后一行抛出异常...谁能指出我正确的方向?

【问题讨论】:

    标签: c# cookies windows-phone-8


    【解决方案1】:

    在您的情况下,您有两个网址:一个是https://domain.com,第二个是https://domain.com/applogin。假设 CookieContainer 包含路径 /applogin 的 cookie。这意味着如果您尝试检索 url https://domain.com/applogin 的 cookie 列表 - 您将获得一个 cookie。如果您尝试检索 url https://domain.com 的 cookie - 您将获得 0 个 cookie。

    现在让我们看看您的示例。您有一个 https://domain.com/applogin 的 cookie,并且您正尝试将其添加到 CookieContrainer 以获取 url https://domain.com。 CookieContainer 验证此 cookie 不能用于特定 url,因为它是不同 url 的问题。在您的情况下,您需要更改添加 cookie 的行:

    webRequest.CookieContainer.Add(new Uri(@"https://domain.com/applogin"), newCookie);
    

    或者我猜你想为整个 domain.com 使用这个 cookie - 那么你需要改变你创建它的方式

    Cookie newCookie = new Cookie("JSESSIONID", session.SessionId, "/", "domain.com");
    

    【讨论】:

      【解决方案2】:

      在某些浏览器中,路径区分大小写。确保所有对“/applogin”的引用都与大小写完全匹配。

      http://msdn.microsoft.com/en-us/library/ms178194%28v=vs.85%29.aspx

      【讨论】:

      • URL 路径始终区分大小写。
      • Windows Web 服务器不区分大小写,而 Linux/Unix 区分大小写。这是因为 windows 的文件系统是不区分大小写的,而 Linux/Unix 是区分大小写的。但是,当执行 cookie 请求时,浏览器从不将 cookie 路径发送到服务器,它会将其与服务器从名称/值对返回的内容进行比较。我相信所有浏览器都对此区分大小写,但我不确定。
      • URL 路径不区分大小写,无论 Web 服务器如何决定将 URL 路径映射到文件系统路径。
      猜你喜欢
      • 2013-12-29
      • 1970-01-01
      • 2018-01-03
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 2011-04-12
      相关资源
      最近更新 更多