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都可以正常获取
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都可以正常获取
解决方案 »
- WinForm 的页面控制问题。
- 一個顯式轉換的問題
- 高分求窗体跳动转 在线等
- 请运用面向对象的知识帮忙分析.net 中 DropDownList.Items.add()
- 关于C#的简单数据绑定
- 关于二进制读取出差错的问题(BinaryReader.ReadInt32())
- 请教C#的Socke高手?? C#做的Socket客户端如何用已连接的Socke接收服务器定时传回的信息????不能阻塞客户端。
- 如何判断DIV滚动条的位置!高分求救!
- 请问该如何往.NET中的richtextbox中加入图片呢?
- C# 如何实现将文件夹分卷压缩
- 推荐一个javascript、html、json在线格式化工具
- 请c# winfrom 如何删除IE临时文件、IEcookies,请给出代码
这个跟浏览器没关系吧,我用的是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
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里面,这是为什么呢,百思不得其解
http://topic.csdn.net/u/20070615/08/01262a7a-3057-4dc1-b2c6-546cd483ae45.html
主站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呢?
另外问下楼主
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);
}