Windows Phone 8的WebResponse是否跳过set-cookie标头

时间:2014-03-20 06:15:22

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

我正在使用我正在构建的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标题。

1 个答案:

答案 0 :(得分:2)

我已经完成了一些测试,只在Windows Phone模拟器上省略了set-cookie标题。使用实际设备进行调试时,会按预期接收标头。

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

<强>更新

在8.0.10322模拟器上进行的测试工作得很好 - 正确处理了cookie。看起来默认的手机模拟器可以使用cookie进行搜索。