【问题标题】:Does the WebResponse for Windows Phone 8 skip set-cookie headersWindows Phone 8 的 WebResponse 是否跳过 set-cookie 标头
【发布时间】:2014-03-20 06:15:22
【问题描述】:

我正在构建一个 Windows Phone 8 应用程序时遇到一些奇怪的行为,我希望这里的人对此有一些经验。

我正在使用普通的 HttpWebRequest 阅读网站,并期望 cookie 作为响应。但是,不知何故,我没有在我的 WebResponse 中获得 Set-cookie 标头。我在 WPF 下创建了相同的功能,它正常工作 - 在响应中返回 Set-cookie 标头。

我也试过查看回复的CookieContainer,但也是空的。

这是我为此使用的代码。 注意:同一段代码(没有异步内容)在 WPF 中工作正常并返回 Set-Cookie 标头。如有必要,我也可以发布:

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.mysite.com/login");

  request.Method = HttpMethod.Post;
  request.AllowAutoRedirect = false;//normally there is a redirect in place

  postData = "username=1234&password=2345";
  var data = Encoding.UTF8.GetBytes(postData);

  request.ContentType = "application/x-www-form-urlencoded";
  request.ContentLength = data.Length;

using (var stream = await Task.Factory.FromAsync<Stream>(request.BeginGetRequestStream, request.EndGetRequestStream, null))
    {
        await stream.WriteAsync(data, 0, data.Length);
        stream.Close();
    }

                using (var response = await Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null))
    {
         return response.Headers["set-cookie"];
    }

因此,我得到了一些响应标头(例如内容类型和服务器特定的标头),但没有 Set-Cookie 一个。

【问题讨论】:

  • 我在 Windows Phone 上看到了 cookie 的非常可疑的行为,所以我并不感到惊讶。我认为第一步是使用 Fiddler 捕获响应并确保服务器返回 set-cookie 标头。然后,通过启用 Visual Studio 来中断所有异常尝试再次运行您的代码(首先,禁用 Just my code msdn.microsoft.com/en-us/library/dn457346.aspx 然后按 control + alt + E 并选中“公共语言运行时异常”前面的框
  • 我也遇到了同样的问题,改用jquery。
  • 感谢@KooKiz 和@Praveen 的建议!我会试一试并报告

标签: c# .net windows-phone-8 httpwebrequest setcookie


【解决方案1】:

我做了更多的测试,set-cookie 标头仅在 Windows Phone 模拟器上被省略。使用实际设备进行调试时,按预期接收标头。

我仍然很奇怪为什么模拟器会这样。我在模拟器中看到了很多关于 http-only cookie 问题的帖子,但没有一个有具体原因。

更新:

在 8.0.10322 模拟器上测试工作正常 - cookie 处理正确。看起来默认手机模拟器对 cookie 做了一些可疑的事情。

【讨论】:

    猜你喜欢
    • 2012-10-15
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多