asp.net使用HttpwebRequest如何解决跨域的问题
最近在用WIndowForm写一个模拟百度推广的登录,使用HttpwebRequest,但是最后一直没有登录成功,返回的值一直是空的,不知道是什么原因,后来再网上查了一下说是可能是跨域的问题,但是我最后修改了Cookie的Domain,也没有反应,不知道有什么更好的方法啊?一下是代码,请各位高手指教
/// <summary>
/// 使用Get提交获得Stream二进制流
/// </summary>
/// <param name="targerUrl">访问路径</param>
/// <param name="contentType">内容类型</param>
/// <param name="referer">设置标头的值</param>
/// <returns></returns>
public Stream GetAndStream(string targetUrl, string contentType, string referer)
{
//创建Request对象
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUrl);
request.ContentType = contentType; //给ContentType赋值
request.CookieContainer = cc; //保存cookie
request.Method = "GET"; //提交的方法
request.AllowAutoRedirect = false; //Internet资源重定向
request.Referer = referer; //设置标头的值
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)";
request.KeepAlive = true;
OnSendingHeaders(request);
//创建response对象
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string setCookie = response.Headers["Set-Cookie"];
OnHttpSet(response);
cc.Add(response.Cookies); //保存cookie
//创建二进制流
Stream stream = response.GetResponseStream();
return stream;
}
public void OnHttpSet(HttpWebResponse response)
{
if (response.Cookies != null && response.Cookies.Count > 0)
{
foreach (Cookie c in response.Cookies)
{
c.Domain = "fengdao.baidu.com";
}
}
}
public void OnSendingHeaders(HttpWebRequest httpWebRequest)
{
try
{
if (httpWebRequest.CookieContainer != null)
{
//string str;
httpWebRequest.Headers.Remove("Cookie");
string cookieHeader = httpWebRequest.CookieContainer.GetCookieHeader(httpWebRequest.Address);
if (cookieHeader.Length > 0)
{
httpWebRequest.Headers["Cookie"] = cookieHeader;
}
}
}
catch (Exception)
{
throw;
}
}