创建跨域cookie
本文关键字:cookie 创建 | 更新日期: 2023-09-27 18:26:47
我正在处理cookie。我能够非常容易地创建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。
正如Marc所说,你不能这样做;除非域是返回响应的域的子域。
同样的限制也适用于添加cookie的客户端上的javascript代码-将应用同源策略。
实现这一点的一个简单方法通常是在从abc.com
返回的页面上的某个位置包含对域xyz.com
上资源的引用——通常是javascript文件或类似的东西。
不过,你必须小心,因为这是第三方cookie,有些用户会禁用这些cookie(因为这就是广告跟踪的工作方式)。
假设您有一组已知的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的每一个页面上,都需要检查http请求路径?favoriteColor=红色,如果存在,请将该域上的favoriteColor cookie设置为红色。
// Pseudocode
if(queryString["favoriteColor"] != null) {
setCookie("favoriteColor", queryString["favoriteColor"]);
}
提示1:进行一些验证以确保您获得的值是有效的,因为用户可以输入任何内容。
提示2:如果要这样做,应该使用https。
技巧3:确保url转义你在url中的cookie名称和值。