0

我正在开发两个网站名称 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。

谢谢,
某人

4

2 回答 2

0

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

一些相关的帖子:

  1. 在一个站点上为另一个站点创建一个经过 asp.net 身份验证的 cookie
  2. 我需要从浏览器中获取所有 cookie
  3. 创建跨域cookie
  4. 跨域cookies

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

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

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

于 2013-09-03T21:26:04.683 回答
0

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

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

于 2013-09-04T04:47:55.677 回答