Set-Cookie: dipan_tag=7aARB3EwStI=; domain=dipan.com; path=/ 
Set-Cookie: login_name=53a51a54a49a55a48a120; domain=dipan.com; path=/ 
Set-Cookie: cid=92212; path=/ 
Set-Cookie: tid=0; path=/ 
Set-Cookie: timeout={list:[]}; path=/ 
Set-Cookie: uid=69725; path=/ 
Set-Cookie: today=1; path=/ Set-Cookie: sg_cur_uid_1=69725; domain=sg7.dipan.com; expires=Sun, 07-Feb-2010 17:45:25 GMT; path=/ 为什么除了最后一条以上的全部可以获取? 是domain的问题吗?应该如何解决?问题补充:我是连接一个网页游戏的程序,抓包分析下来除了setcookies sg_curxxxx domain=sg7.xxxx这个之外其余的都能够储存进来。 
我是用WebClient类重载 protected override WebRequest GetWebRequest(Uri address) 

WebRequest request = base.GetWebRequest(address); 
request.PreAuthenticate = true; 
if (request is HttpWebRequest) 

HttpWebRequest httpRequest = request as HttpWebRequest; 
httpRequest.AllowAutoRedirect = false ; 
httpRequest.CookieContainer = cookieContainer; 

return request; 

实现获取cookie的,那么sg7.xxx的cookies应该如何获取 
//MyCookies.SetCookies(new Uri("http ://g7.dipan.com"), "sg_cur_uid_1=69725"); 
上面这行如果去掉注释就能够成功登陆游戏,而这个cookies无法通过WebClient自动获取,其余的dipan.com的cookies都可以正常获取

解决方案 »

  1.   

    http://www.cnblogs.com/ratooner/archive/2007/08/01/838939.html
      

  2.   

    是不是跟浏览器的agent签名有关`~
      

  3.   


    这个跟浏览器没关系吧,我用的是WebClient类,我也试过直接HttpWebRequest,几十个Cookies都能正常获取,就唯独这个Set-Cookie: sg_cur_uid_1=69725; domain=sg7.dipan.com; expires=Sun, 07-Feb-2010 17:45:25 GMT; path=/ 分析下来只有domain的部分不一样,而且我输出过textBox2.Text ="count:" + MyCookies.GetCookies(uri).Count.ToString()+"\nCookies:"+ MyCookies.GetCookieHeader(uri).ToString();当uri为sg.dipan.com时和sg7.dipan.com时输出的值是一样的,难道这两个都是指向dipan.com而不是带二级域名的?那如何能够获取sg7.dipan.com的Cookies
      

  4.   

    能否强行从服务器的response中截取set-cookie的内容?
      

  5.   


            HttpClient wc=new HttpClient(); //全局虚拟浏览器        /// <summary>
            /// 初始化游戏数据 进入所选服务器 GameUrl
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void bGetlogin_Click(object sender, EventArgs e)
            {
                //MyCookies.SetCookies(new Uri(SeverUrl), "sg_cur_uid_1=69725");
               
                //头部
                //wc = new HttpClient(MyCookies);
                wc.Headers.Add(HttpRequestHeader.Accept, "*/*");
                wc.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-cn");
                wc.Headers.Add(HttpRequestHeader.Referer, "http://sg.dipan.com/serverlist.html");
                wc.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
                wc.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)");
                
                //wc.Headers.Add(HttpRequestHeader.CacheControl, "no-cache");
                byte[] bytes = wc.DownloadData(GameUrl); //GET
                
                //bytes就是返回的BYTE格式
                textBox1.Text = Encoding.Default.GetString(bytes);
                //Stream s = wc.OpenRead(LoginUrl);
                //StreamReader sr = new StreamReader(s, Encoding.UTF8);
                //string result = sr.ReadToEnd();
                //textBox2.Text = result;
                TestShow(new Uri(GameUrl));
            
            }//MyCookies.SetCookies(new Uri(SeverUrl), "sg_cur_uid_1=69725");注释掉的这行是从服务器截取的response里模拟的,每个用户都不一样,唯一这个Cookies不能获取到webclient 的wc里面,这是为什么呢,百思不得其解
      

  6.   

    sg.dipan.com和sg7.dipan.com应该是同一个服务器同一个IP,属于伪(假)二级域名
    http://topic.csdn.net/u/20070615/08/01262a7a-3057-4dc1-b2c6-546cd483ae45.html
      

  7.   


    主站www.abc.com 有个cookie值为 test : 123123 domain:ABC.com 
    子站www1.abc.com 使用HttpWebRequest访问的时候,就算添加了test这个cookie,它也是 不会发送的。 Reflector.net的代码后发现,其添加cookie值的方法如下 if (httpWebRequest.CookieContainer != null) 
            ...{ 
                string str; 
                httpWebRequest.Headers.RemoveInternal("Cookie"); 
                string cookieHeader = httpWebRequest.CookieContainer.GetCookieHeader(httpWebRequest.Address, out str); 
                if (cookieHeader.Length > 0) 
                ...{ 
                    httpWebRequest.Headers["Cookie"] = cookieHeader; 
                } 
            } 这里可以看出,是通过地址得到cookie的值的,所以www1.abc.com只会发送 domain=www1.ABC.com的cookie值。 我连接www.abc.com的时候正确得到了domain=abc.com的cookies 
    但是对于domain=www1.abc.com的cookies被HttpWebRequest无视了 结果输出的Cookies全部都是domain=abc.com的,要如何才能得到domain=www1.abc.com的Cookies呢?
      

  8.   

    顶 
    另外问下楼主
    1.
    我某个页面设置了cookie之后 
    想在其他任何页面(随便一个网址,不是同一站点)访问这个cookie;
    怎么设置cookie的值2.下面这个函数中 能否将已存在的cookieName的值改为新的cookieValue
       private void setCookie(string cookieName, string cookieValue)
        {
            HttpCookie cookie = new HttpCookie("cookieName", "cookieValue");              cookie.Expires = DateTime.Now.AddDays(7);    //设置Cookie过期时间为30 秒        cookie.Path = "/";
            /**/
            /*设置可访问Cookie的路径 为项目下的cookie文件夹及其子文件夹下所有页面
             * 如果需要整个应用程序可访问 则设置为cookie.Path = "/";即可
             */        Response.Cookies.Add(cookie);
         
        }