使用跨域创建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名称和值。