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个站点上为另一个站点创建一个asp.net认证cookie
- 我需要从浏览器中获取所有cookie
- 使用跨域创建cookie
- 跨域cookie
更新:一点澄清:作为服务器 ,您无法在客户端上获取或设置其他域的cookie,这是您想要做的。 作为客户端 ,您可以修改/删除服务器为您设置的cookie。
-
在您的示例中,您的服务器端代码正在向web1.com发出请求。 您不会为随机客户端获取cookie。 客户端完全不参与上面的代码。
-
如果我访问web1.com并且您设置了一个名为“username”的cookie,其值为“bob”,我可以作为客户端修改此cookie,使其值为“admin”,然后可能拥有您网站的管理员权限,取决于您处理Cookie的方式。