【问题标题】:C# - HttpClient is not sending any cookiesC# - HttpClient 没有发送任何 cookie
【发布时间】:2013-09-03 20:31:46
【问题描述】:

我正在开发两个网站名称 www.web1.com 和 www.web2.com。 在 web1 中,我正在保存一个 http cookie,如下所示

 HttpCookie AuthCookie = new HttpCookie(AppConstants.Cookie.AUTH_COOKIE);
 AuthCookie.Path = "/";
 AuthCookie.Value = "value1";
 Response.Cookies.Add(AuthCookie);

现在我想要在第二个网站即 web2 中读取此 cookie。我正在尝试使用 HttpClient 阅读它,如下所示

 HttpClientHandler handler = new HttpClientHandler();
 handler.CookieContainer = new CookieContainer();

 HttpClient client = new HttpClient(handler);
 response = client.GetAsync("http://www.web1.com").Result;

 var cookies = cookies.GetCookies(new Uri("http://www.web1.com"));

这不会返回任何 cookie,也通过 Fiddler 进行了检查。但是如果我直接打开 www.web1.com 并检查 fiddler 然后它会发送 cookie。

请查看我缺少的内容,以便不会从 httpclient 返回 cookie。

谢谢,
某人

【问题讨论】:

    标签: c# asp.net .net cookies httpclient


    【解决方案1】:

    不确定这是否适合您的情况,但AuthCookie.Domain = "IP/Domain"; 应该为您完成这项工作。

    话虽如此,还有其他替代方法,例如查询字符串和您可能感兴趣的其他域上的页面帖子。

    【讨论】:

    • 谢谢,现在我所有的 cookie 都与 localhost 具有相同的域,但我仍然没有使用 httpclient 获取 cookie 信息。
      页面发布和查询字符串不是一个选项,因为它会导致页面刷新或重定向,这对用户来说是一个问题。请提出建议。
    【解决方案2】:

    您无法获取或设置其他域的 cookie。那将是一个巨大的安全问题。 (你想让我在我的网站上阅读你网站的 cookie 吗?)

    一些相关的帖子:

    1. Create a asp.net authenicated cookie on 1 site for another
    2. I need to get all the cookies from the browser
    3. Create cookie with cross domain
    4. Cross domain cookies

    更新: 澄清一点:作为服务器,您无法在客户端上为另一个域获取或设置 cookie,这是您想要做的.作为客户端,您可以修改/删除服务器为您设置的 cookie。

    1. 在您的示例中,您的 服务器端代码 正在向 web1.com 发出请求。您不会为随机客户端获取 cookie。上面的代码中根本不涉及客户端。

    2. 1234563对您的网站拥有管理员权限,具体取决于您处理 Cookie 的方式。

    【讨论】:

    • 谢谢,我理解你的意思,但我有点困惑,因为如果我向 www.google.com 发送 HttpClient 请求,那么它会返回两个 cookie,例如 PID 和 HRef。那么cookie中是否有某种设置可以将其发回?
    • @SumitBakshi 可能是因为这些是您服务器的 cookie,用于向 google 发出请求。
    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2021-07-15
    • 2016-02-24
    相关资源
    最近更新 更多