我正在研究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。有什么建议吗?
答案 0 :(得分:11)
出于安全原因,您只能将域设置为您自己(当前站点)和您自己的子域。您无法为任意网站设置Cookie。
答案 1 :(得分:2)
正如马克所说 - 你不能这样做;除非域是返回响应的域的子域。
同样的限制也适用于客户端添加cookie的javascript代码 - 同样的原始政策将适用。
实现此目的的一种简单方法通常是在abc.com
返回的页面上包含对域xyz.com
上的资源的引用 - 通常是javascript文件或类似内容。
你必须注意那里,因为那是第三方cookie,有些用户会禁用这些(因为这是广告跟踪的工作方式)。
答案 2 :(得分:0)
假设您想要跨域跟踪一组已知的Cookie,并且您拥有与之共享Cookie的所有域,则可以自行构建此功能。这是穷人的跨域cookie跟踪:
您可以将“?favoriteColor = red”添加到abc.com上指向xyz.com的所有链接。
<a href="xyz.com/contact?favoriteColor=red">XYZ Contact</a>
然后对xyz.com上指向abc.com的所有链接执行相同的操作。
<a href="abc.com/contact?favoriteColor=red">ABC Contact</a>
现在在abc.com和xyz.com的每一页上都需要检查?favoriteColor = red的http请求路径,如果存在,请将该域上的favoriteColor cookie设置为红色。
// Pseudocode
if(queryString["favoriteColor"] != null) {
setCookie("favoriteColor", queryString["favoriteColor"]);
}
提示1:进行一些验证以确保您获得的值有效,因为用户可以输入任何内容。
提示2:如果您要这样做, 应使用https。
提示3:确保url在网址中转义您的Cookie名称和值。