Web应用A中的a.htm中有一个iframe,iframe指向Web应用B的b.aspx(含Web应用B的Cookie读写操作,与A应用无关)
在b.aspx.cs中没有设置Cookie的域,domain都取默认值。
本地localhost测试时,在可以看到[email protected]中有b.aspx.cs写入的Cookie。
但部署到正式环境中,A应用部署于http://www.123.com下,B应用部署于http://www.456.net下。
这时在客户端访问A应用的a.htm时,发现B应用的b.aspx没有向本地Cookie中写入数据。
写日志文件,发现此时b.aspx.cs中的Cookie.domain为空。
请教各位大虾,这时怎么回事啊?如何解决呢?
在b.aspx.cs中没有设置Cookie的域,domain都取默认值。
本地localhost测试时,在可以看到[email protected]中有b.aspx.cs写入的Cookie。
但部署到正式环境中,A应用部署于http://www.123.com下,B应用部署于http://www.456.net下。
这时在客户端访问A应用的a.htm时,发现B应用的b.aspx没有向本地Cookie中写入数据。
写日志文件,发现此时b.aspx.cs中的Cookie.domain为空。
请教各位大虾,这时怎么回事啊?如何解决呢?
我是这么写cookie的
request.cookies["name1"]["item11"]=value11;
request.cookies["name1"]["item12"]=value12;
request.cookies["name1"]["item12"]=value12;
request.cookies["name1"].Domain="www.456.net";
request.cookies["name1"].Expires=DateTime.Now.AddYear(10);
为什么客户端还是没有对应的Cookie记录呢?头发都白了!苦啊!
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<div>
<iframe src="http://www.456.net/b.aspx" width=500 heigth=300 frameborder=1 scrolling=no></iframe>
</div>
</body>
</html>
-----------------------------------------------------------------------------
b.aspx没有人工加任何代码
---------------------------------------
b.aspx.cs的page_load代码如下for(int i=0;i<this.Request.Cookies.Count;i++){
if(this.Request.Cookies[i].HasKeys==true&&this.Request.Cookies[i].Name=="TCL"){
for(int j=0;j<this.Request.Cookies[i].Values.Count;j++){
string sname=this.Request.Cookies[i].Name;
string sitem=this.Request.Cookies[i].Values.AllKeys[j];
string svalue=this.Request.Cookies[i].Values[j];
this.Response.Cookies[sname][sitem]=svalue;
}
break;
}
}
this.Response.Cookies["TCL"]["ITEM"+DateTime.Now.ToString("yyyyMMddHHmmss")]=DateTime.Now.ToString("yyyyMMddHHmmss");
if(CADProvider.CADProvider.Domain!=null&&CADProvider.CADProvider.Domain!=""){
this.Response.Cookies["TCL"].Domain=CADProvider.CADProvider.Domain;
}
this.Response.Cookies["TCL"].Expires=DateTime.Now.AddHours(1);-----------------------------------------------------------------------------
其中CADProvider.CADProvider.Domain为配置文件中读取的Cookie的域名真是不明白了 CADProvider.CADProvider.Domain 配置为 www.456.net / .456.net / 456.net / www.123.com / 123.com 都不行啊!
真是绝了!
Web应用A中的a.htm中有一个iframe,iframe指向Web应用B的b.aspx(含Web应用B的Cookie读写操作,与A应用无关)
A应用部署于http://www.123.com下,B应用部署于http://www.456.com.cn下
a.htm代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<div>
<iframe src="http://www.456.com.cn/aditem/b.aspx" width=500 heigth=300 frameborder=1 scrolling=no></iframe>
</div>
</body>
</html>
-----------------------------------------------------------------------------
b.aspx没有人工加任何代码
---------------------------------------
b.aspx.cs的page_load代码如下
for(int i=0;i<this.Request.Cookies.Count;i++){
if(this.Request.Cookies[i].HasKeys==true&&this.Request.Cookies[i].Name=="TCL"){
for(int j=0;j<this.Request.Cookies[i].Values.Count;j++){
string sname=this.Request.Cookies[i].Name;
string sitem=this.Request.Cookies[i].Values.AllKeys[j];
string svalue=this.Request.Cookies[i].Values[j];
this.Response.Cookies[sname][sitem]=svalue;
}
break;
}
}
this.Response.Cookies["TCL"]["ITEM"+DateTime.Now.ToString("yyyyMMddHHmmss")]=DateTime.Now.ToString("yyyyMMddHHmmss");
if(CADProvider.CADProvider.Domain!=null&&CADProvider.CADProvider.Domain!=""){
this.Response.Cookies["TCL"].Domain=CADProvider.CADProvider.Domain;
}
this.Response.Cookies["TCL"].Expires=DateTime.Now.AddHours(1);
-----------------------------------------------------------------------------
真是不明白了 CADProvider.CADProvider.Domain 配置为 www.456.com.cn / .456.com.cn / 456.com.cn / www.123.com / 123.com 都不行啊!
会不会和Cookie的路径有关呢?
采用viewstate 吧!
====CSDN 小助手 V2.5 2005年11月05日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2
另
我把路径也设置了
this.Response.Cookies["TCL"].Path="/aditem";
CADProvider.CADProvider.Domain 配置为 456.com.cn
还是不行。
单独调用 http://www.456.com.cn/aditem/b.aspx ,Cookie读写都是正常的,我已经晕了!
http://www.456.com.cn/aditem/b.aspx
看看能否正常写cookie
去请教了高人,说这是跨域写Cookie,虽然可以通过页面跳转的方式来写Cookie,但我的应用环境(B应用相当于广告发布系统应用,b.aspx即广告展现页面,A应用相当于广告发布站点,a.htm即广告发布页面)不允许进行页面跳转方式来写Cookie。
微软真是的,iframe中自己写自己的Cookie,又不访问其他域的Cookie,这也有安全隐患?
得了,还是自己看看有没有别的解决方法了。
散分吧!谢谢各位!