【问题标题】:HttpWebRequest Cookies not being set未设置 HttpWebRequest Cookie
【发布时间】:2016-12-11 22:37:47
【问题描述】:

我正在尝试做一些简单的事情,我已经通过网络查看了示例,但我不确定我做错了什么 这是一个单元测试,我正在测试一些稍后将由一些不同设备执行的功能
基本上我正在为我的网站创建一个 webrequest,它返回一组 cookie,我们稍后需要
然后我想创建一个新的 webrequest,使用从第一个响应返回的 cookie,但是当我阅读该信息时,cookie 是空的

var request =   (HttpWebRequest)WebRequest.Create("http://localhost/bla");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "GET";

request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(originalResponse.Cookies); // originalResponse.Cookies has several cookies needed by "bla"
var response = request.GetResponse();

在另一个地方……(在“bla”里面)

HttpContext.Current.Request.Cookies  // this is empty

【问题讨论】:

    标签: c# asp.net cookies


    【解决方案1】:

    好的,发现发生了什么 问题是我们不能只将 cookiecontainer 设置为从响应中获取 cookie,因为这是一个新请求,我们还需要设置 cookie 所属的域(.net 并不假设该域是来自Request 对象中的 URI)

    所以,我们在设置 cookie 时需要这样做:

    request.CookieContainer = new CookieContainer();
    request.CookieContainer.Add(new Uri("http://localhost"), originalResponse.Cookies);
    

    正如另一个注意事项,我在设置 cookie 时遇到了路径问题。收到类似“cookie 的 'Path'=/MyApp 部分无效”之类的错误。我通过在添加它们之前将 cookie 的路径设置为空来解决这个问题(并使它们在整个域中有效)

       for (int i = 0; i < originalResponse.Cookies.Count; i++)
       {
            originalResponse.Cookies[i].Path = String.Empty;
       }
    

    【讨论】:

    • 如果这解决了问题,请将其标记为已解决,以便其他人可以更轻松地找到它,并且它不会被列为未回答:)
    • 如何将其标记为已解决?我试图接受我自己的答案,但它说我需要等待 2 天
    【解决方案2】:

    您是否尝试过直接查看请求标头,甚至尝试使用 HTTP 检查工具?

    originalResponse.Cookies 是否填充了数据?集合和传出请求的域是否相同?

    【讨论】:

    • 我现在正在尝试使用 fiddler 来查看发生了什么。但是由于某种原因,提琴手没有捕获请求(因为它直接进入 iis)。试图解决这个问题:) 域是相同的,填充了 originalResponse.Cookies(它在代码注释中)
    • 好的,请求中没有设置 cookie。但是,CookieContainer 变量确实有 cookie。有什么想法吗?
    • fiddler 可能无法拦截,因为它必须充当代理并且不涉及代理设置 - 您是说您的新出站请求没有附加任何 cookie 数据吗?嗯...
    • @annakata 可以使用这个语句 webRequest.Proxy = new WebProxy("127.0.0.1", 8888);有提琴手拦截。也许它会帮助别人。
    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2019-04-16
    • 2018-06-22
    • 2021-10-21
    相关资源
    最近更新 更多