2012-03-05 101 views
3

我正在使用cookie。我可以很容易地创建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了。有什么建议么?

+1

感谢达米安答复,对不起,我没有解释的问题很well.So现在我解释this.My网站主机上的abc.com域,但我想一边写的cookie – Sunny 2012-03-05 09:40:55

回答

11

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

+0

感谢马克添加xyz.com域对于答复,对不起,我没有很好地解释问题。所以现在我解释这一点。我的网站是在abc.com域的主机,但我想在写cookie时添加xyz.com域 - – Sunny 2012-03-05 09:41:50

+2

@Sunny - 这就是marc在说 - 你不能那样做。 – 2012-03-05 09:45:18

+0

@Sunny是的,又一次:你不能那样做。 abc.com可以将cookies写入abc.com,foo.abc.com和* .abc.com;它**不能**为xyz写入cookie。**全部**。 – 2012-03-05 09:46:27

2

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

同样的限制适用于JavaScript代码在客户端加入饼干以及 - 同样的原产地政策将适用。

实现此目的的一种简单方法通常包括在从abc.com返回的页面上某处引用域xyz.com上的资源 - 通常是JavaScript文件或类似的文件。

你看那里,虽然,因为这是一个第三方的cookie,有些用户将有那些禁用(因为它的广告跟踪是如何工作的)。

0

假设你已经一组已知的要跟踪跨域饼干和你拥有所有你与分享饼干域,你可以自己建立这个功能。这里是穷人的跨域cookie跟踪:

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

<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 =红色http请求的路径,如果它存在,设置favoriteColor饼干在该域为红色。

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

提示1:做一些验证,以确保你得到的值是有效的,因为用户可以输入任何东西。

提示2:您应该使用https,如果您要这样做。

提示3:请务必将url转义为您的cookie名称和url中的值。