我正在开发两个网站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
答案 0 :(得分:0)
您无法获取或设置其他域的Cookie。这将是一个巨大的安全问题。 (你想让我在我的网站上阅读你网站的cookies吗?)
一些相关帖子:
更新:一点澄清:作为服务器,您无法在客户端上获取或设置其他域的Cookie,这是您想要做的。作为客户端,您可以修改/删除服务器为您设置的Cookie。
在您的示例中,您的服务器端代码正在向web1.com发出请求。您不会为随机客户端获取cookie。上面的代码中没有涉及客户端。
如果我访问web1.com并设置一个名为“username”的cookie,其值为“bob”,我可以作为客户端修改此cookie,使其值为“admin”,然后可能拥有您网站的管理员权限,具体取决于您处理Cookie的方式。
答案 1 :(得分:0)
不确定这是否适用于您的情况,但AuthCookie.Domain = "IP/Domain";
应该为您完成工作。
已经说过其他可能感兴趣的其他选择,例如查询字符串和页面帖子。