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为空。
请教各位大虾,这时怎么回事啊?如何解决呢?

解决方案 »

  1.   

    我把domain设置成www.456.com看看
      

  2.   

    各位大虾,设成www.456.net还是不行啊。
    我是这么写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记录呢?头发都白了!苦啊!
      

  3.   

    a.htm代码如下
    <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 都不行啊!
    真是绝了!
      

  4.   

    修正一下
    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);
    -----------------------------------------------------------------------------
      

  5.   

    其中CADProvider.CADProvider.Domain为配置文件中读取的Cookie的域名
    真是不明白了 CADProvider.CADProvider.Domain 配置为 www.456.com.cn / .456.com.cn / 456.com.cn / www.123.com / 123.com 都不行啊!
    会不会和Cookie的路径有关呢?
      

  6.   

    改配置吧!
    采用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
      

  7.   

    谢谢yoursunboy(佩),我使用Cookie的目的是记录信息在客户端,以便以后调用。ViewState的作用时效只有当前页面存在的情况下吧,不能符合我的要求。

    我把路径也设置了
    this.Response.Cookies["TCL"].Path="/aditem";
    CADProvider.CADProvider.Domain 配置为 456.com.cn 
    还是不行。
    单独调用 http://www.456.com.cn/aditem/b.aspx ,Cookie读写都是正常的,我已经晕了!
      

  8.   

    你单独访问一xia
    http://www.456.com.cn/aditem/b.aspx
    看看能否正常写cookie
      

  9.   

    谢谢icefoxchilde(冰狐) ,单独调用 http://www.456.com.cn/aditem/b.aspx ,Cookie读写都是正常的
      

  10.   

    如果你使用的是IE 6.0,请查看一下“安全选项中”,在IFRAME中加载程序和文件是否打开。
      

  11.   

    谢谢icefoxchilde(冰狐),由于我的程序是面向公众,不会要求公众都修改安全选项。
    去请教了高人,说这是跨域写Cookie,虽然可以通过页面跳转的方式来写Cookie,但我的应用环境(B应用相当于广告发布系统应用,b.aspx即广告展现页面,A应用相当于广告发布站点,a.htm即广告发布页面)不允许进行页面跳转方式来写Cookie。
    微软真是的,iframe中自己写自己的Cookie,又不访问其他域的Cookie,这也有安全隐患?
    得了,还是自己看看有没有别的解决方法了。
    散分吧!谢谢各位!