C# – HttpClient没有发送任何cookie

我正在开发两个网站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并检查提琴手,那么它会发送cookie。

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

谢谢,
SB

不确定这是否适用于您的情况,但AuthCookie.Domain = "IP/Domain"; 应该为你做的工作。

说过其他可能感兴趣的其他领域的查询字符串和页面post等其他替代方案。

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

一些相关的post:

  1. 在1个站点上为另一个站点创建一个asp.net认证cookie
  2. 我需要从浏览器中获取所有cookie
  3. 使用跨域创建cookie
  4. 跨域cookie

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

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

  2. 如果我访问web1.com并且您设置了一个名为“username”的cookie,其值为“bob”,我可以作为客户端修改此cookie,使其值为“admin”,然后可能拥有您网站的管理员权限,取决于您处理Cookie的方式。