HttpWebRequest跨域cookie的访问
2007-11-21 21:55
585 查看
算算,有一个星期没写blog,自己最近也有些事情忙,而且也没找到很有价值的东西写,所以一直就拉着。最近工作上也没有 特别烦恼的事,所以也就少了些生活感慨。
最近的一个小程序中,使用到HttpWebRequest,在对子域名访问的时候,发现HttpWebRequest并不会提交与他域名不同的cookie值,其实这也是正确,毕竟只需要发送本域cookie就是了,不过HttpWebRequest不会判断是否是主域名的cookie值。比如说
主站 www.ABC.com 有个cookie值为 test : 123123 domain:ABC.com
子站bbs.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的值的,所以bbs.ABC.com只会发送domain=bbs.ABC.com的cookie值。
解决方法,强制把domian给改掉就可以了
最近的一个小程序中,使用到HttpWebRequest,在对子域名访问的时候,发现HttpWebRequest并不会提交与他域名不同的cookie值,其实这也是正确,毕竟只需要发送本域cookie就是了,不过HttpWebRequest不会判断是否是主域名的cookie值。比如说
主站 www.ABC.com 有个cookie值为 test : 123123 domain:ABC.com
子站bbs.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的值的,所以bbs.ABC.com只会发送domain=bbs.ABC.com的cookie值。
解决方法,强制把domian给改掉就可以了
相关文章推荐
- 跨域读取Cookie和session之HttpWebRequest另类方法(网站API开发)
- VB.net使用httpWebRequest访问带cookie的网站时如何传递cookie值
- 跨域读取Cookie和session之HttpWebRequest另类方法(网站API开发)
- 转 跨域读取Cookie和session之HttpWebRequest另类方法(网站API开发)
- 跨域读取Cookie和session之HttpWebRequest另类方法
- 使用HttpWebRequest访问Web服务,并传递Cookie数据
- 跨域读取Cookie和session之HttpWebRequest另类方法(网站API开发)
- 用httpwebrequest访问跨域网站时对CookieContainer的处理
- 将网页设置为允许 XMLHttpRequest 跨域访问
- C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- 将WebBrowser的cookie信息传给HttpWebRequest
- 浏览器能访问,但是HttpWebRequest请求却无响应
- 将WebBrowser的cookie信息传给HttpWebRequest.
- C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现方法
- C# 使用HttpWebRequest Post提交数据,携带Cookie和相关参数示例
- 用户登录模拟浏览器访问数据库的新形式--HttpWebRequest 访问数据库
- C#使用HttpWebRequest进行HTTP请求发送和接收的一些小结。(新增修复.NET4.0以下关于cookie的bug)
- 【C#MVC】 使用HttpWebRequest访问外部API,并返回json信息 (Access_Key)
- 2008年3月小记(设置Windows服务的依赖关系,配置MSMQ的访问权限,WCF的安全配置,删除重建网站,HttpWebRequest,一年中的周,在WCF中使用HttpContext,String.Join)