Asp.net 使用浏览器存储的cookies发出HttpWebRequest
例如,如果我向“www.sport.com”发出Asp.net 使用浏览器存储的cookies发出HttpWebRequest,asp.net,cookies,httpwebrequest,Asp.net,Cookies,Httpwebrequest,例如,如果我向“www.sport.com”发出HttpWebRequest,我希望使用浏览器在以前会话中存储的cookie。我该怎么做 更新: 也许我没有解释清楚,如果我向“www.google.com”发出HttpWebRequest请求,那么request.CookieContainer必须包含chrome/firefox/ie/等的所有cookie。。。已存储在google.com以前的所有会话中。例如,在firefox中,我可以看到他们进入选项>隐私>删除单个cookie 更新2: 我
HttpWebRequest
,我希望使用浏览器在以前会话中存储的cookie。我该怎么做
更新:
也许我没有解释清楚,如果我向“www.google.com”发出HttpWebRequest请求,那么request.CookieContainer必须包含chrome/firefox/ie/等的所有cookie。。。已存储在google.com以前的所有会话中。例如,在firefox中,我可以看到他们进入选项>隐私>删除单个cookie 更新2: 我需要这样的东西: 在javascript中,如果我创建这样一个httpwebrequest
document.write('<script type="text/javascript" src="http://www.google.com"><\/script>')
document.write(“”)
自动获取浏览器先前会话中已存储的Cookie首先创建HttpWebRequest,设置所有内容,然后向其中添加Cookie,如下所示: 1) 为HttpWebRequest的HttpWebRequest.CookieContainer属性创建System.Net.CookieContainer对象
request.CookieContainer = new CookieContainer();
2) 使用CookieContainer.Add方法将cookie对象添加到HttpWebRequest.CookieContainer
request.CookieContainer.Add(new Uri("http://api.search.live.net"),new Cookie("id","1234"));
更新:对于您的新评论,访问cookies非常简单,您可以从HttpContext.Current.Request.cookies获取它们。这里有一个方法,它使用HttpWebRequest,通过HttpContext.Current.Request.cookies对象提供浏览器cookies
public static string WebRequestPostRequest(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
CookieContainer cookieContainer = new CookieContainer();
HttpCookieCollection httpCookies = HttpContext.Current.Request.Cookies;
for (int j = 0; j < httpCookies.Count; j++)
{
HttpCookie httpCookie = httpCookies.Get(j);
Cookie myCookie = new Cookie();
// Convert between the System.Net.Cookie to a System.Web.HttpCookie...
myCookie.Domain = request.RequestUri.Host;
myCookie.Expires = httpCookie.Expires;
myCookie.Name = httpCookie.Name;
myCookie.Path = httpCookie.Path;
myCookie.Secure = httpCookie.Secure;
myCookie.Value = httpCookie.Value;
cookieContainer.Add(myCookie);
}
request.Method = "POST";
//set other request properties here...
var response = (HttpWebResponse)request.GetResponse();
return new StreamReader(response.GetResponseStream()).ReadToEnd();
}
公共静态字符串WebRequestPostRequest(字符串url)
{
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(url);
CookieContainer CookieContainer=新CookieContainer();
HttpCookieCollection httpCookies=HttpContext.Current.Request.Cookies;
对于(int j=0;j
我不知道如何在request.CookieContainer中填充浏览器中已存储的Cookie。谢谢gaurav,但我不需要手动设置Cookie。我需要用浏览器中已存储的cookies(例如chrome)填充request.CookieContainer,尝试类似这样的操作:“request.CookieContainer=new CookieContainer();request.CookieContainer.Add(HttpContext.Current.request.Cookies);'不幸的是,它似乎不起作用,它只给我一个cookie ASP.NET_SessionId。但是,如果我直接使用chrome浏览器提出请求,例如,如果我去google.com,有那么多cookies,也许我没有解释清楚,如果我向“www.google.com”发出HttpWebRequest请求,request.CookieContainer必须包含chrome/firefox/ie/等的所有cookies。。。已存储在以前的所有会话中。例如,在firefox中,我可以看到他们进入选项>隐私>删除单个cookie。Microsoft为HttpWebRequest(传出请求)创建了cookie cookie类型,为HttpRequestBase(传入请求)创建了HttpCookie类型。它们使所有类型都不兼容,因此不能在集合之间复制cookie。那太愚蠢了。你忘了mycokie.HttpOnly=httpCookie.HttpOnly代码>。它阻止客户端脚本访问cookie,但不阻止它被传输到服务器或从服务器传输。