【问题标题】:NET 4.5 HttpClient send cookie anyway (despite changed domain)NET 4.5 HttpClient 仍然发送 cookie(尽管更改了域)
【发布时间】:2013-07-19 13:46:17
【问题描述】:

我在 C# 中创建了一个 HttpClient

                Client = new HttpClient(handler);

处理程序是这个

   var handler = new HttpClientHandler
        {
            CookieContainer = CookieContainer,
            AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
        };

我在一个站点中发送一些请求,假设它是 xyzevents.com。我正常收到回复,我存储了一些从“Set Cookie:*”命令收到的 cookie,一切正常。

但是,在此之后,我尝试与 xyz.com 网站进行通信。为此,我必须使用我之前从 xyzevents.com 存储的 cookie 发送我的请求。 HttpClient 不能这样做,因为它看到的主机与 xyzevents.com 不同。

有没有办法绕过该检查,并毫无问题地发送我的请求?

【问题讨论】:

    标签: cookies dns httpclient handler cookiecontainer


    【解决方案1】:

    我认为无论如何“禁用”此检查。我认为是HttpClient 最终决定应该发送哪些cookie,而不是容器。最后,在任何地方发送随机 cookie 可能发生的安全风险非常大。

    这样,您可以轻松地遍历从xyz.com 收到的所有 cookie,手动创建它们,更改域但相同的值。然后将它们添加到发送到xyzevents.com 的新集合中。

    【讨论】:

    • 想不出办法来编辑我收到的 cookie。尤其是现在这个客户端是在受保护的请求基类中创建的。
    • @PanosPaschalis 你不会“编辑”它们。您只需遍历第一个容器中的 cookie,然后从该 cookie 中获取值并创建一个具有正确域名的新 cookie,将其添加到第二个容器中。然后将第二个容器分配给处理程序。
    • 是的,我在代码执行过程中好像无法访问cookiecontainer,只能访问HttpClient(Client)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多