使用跨域创建cookie

我正在研究cookies。 我可以很容易地创建cookie。 要创建cookie我正在使用此代码:

HttpCookie aCookie = new HttpCookie("Cookie name"); aCookie.Value = "Value"; Response.Cookies.Add(aCookie); 

这段代码对我来说很好,它给了我localhost作为主机。 但是当我尝试在这里添加域名时问题就出现了:

 HttpCookie aCookie = new HttpCookie("Cookie name"); aCookie.Value = "Value"; aCookie.Domain = "192.168.0.11"; Response.Cookies.Add(aCookie); 

现在没有生成cookie。 有什么建议?

出于安全原因,您只能将域设置为您自己(当前站点)和您自己的子域。 您无法为任意网站设置Cookie。

正如马克所说 – 你不能这样做; 除非域是返回响应的域的子域。

同样的限制也适用于客户端添加cookie的javascript代码 – 同样的原始策略将适用。

实现此目的的一种简单方法通常是在abc.com返回的页面上包含对域xyz.com上的资源的引用 – 通常是javascript文件或类似的东西。

但是,您必须注意那里,因为这是第三方Cookie,而某些用户会禁用这些Cookie(因为这是广告跟踪的工作原理)。

假设您有一组已知的cookie,您希望跨域跟踪,并且您拥有与之共享cookie的所有域,您可以自己构建此function。 这是穷人的跨域cookie跟踪:

您可以将“?favoriteColor = red”添加到指向xyz.com的abc.com上的所有链接

 XYZ Contact 

然后对xyz.com上指向abc.com的所有链接执行相同的操作。

 ABC Contact 

现在在abc.com和xyz.com的每个页面上都需要检查?favoriteColor = red的http请求路径,如果它存在,请将该域上的favoriteColor cookie设置为红色。

 // Pseudocode if(queryString["favoriteColor"] != null) { setCookie("favoriteColor", queryString["favoriteColor"]); } 

提示1:进行一些validation以确保您获得的值有效,因为用户可以输入任何内容。

提示2:如果你打算这样做,你应该使用https。

提示3:确保url在url中转义您的Cookie名称和值。