Cookies 清除WebRequest中的cookie容器
我使用WebRequest对象将数据发布到登录页面,然后将数据发布到同一站点上的单独页面。我正在实例化CookieContainer并将其分配给WebRequest对象,以便处理cookie。问题是我不想在将数据发布到另一个页面后保留cookie。如何删除该cookieCookies 清除WebRequest中的cookie容器,cookies,httpwebrequest,webrequest,cookiecontainer,Cookies,Httpwebrequest,Webrequest,Cookiecontainer,我使用WebRequest对象将数据发布到登录页面,然后将数据发布到同一站点上的单独页面。我正在实例化CookieContainer并将其分配给WebRequest对象,以便处理cookie。问题是我不想在将数据发布到另一个页面后保留cookie。如何删除该cookie private CookieContainer cookie_m; protected CookieContainer CookieContainer { get { if (cookie_m =
private CookieContainer cookie_m;
protected CookieContainer CookieContainer
{
get
{
if (cookie_m == null)
{
cookie_m = new CookieContainer();
}
return cookie_m;
}
set
{
cookie_m = value;
}
}
protected virtual void SetData(WebRequest request, string sData)
{
if (!String.IsNullOrEmpty(sData))
{
byte[] binPostData = System.Text.Encoding.ASCII.GetBytes(sData);
request.ContentLength = binPostData.Length;
System.IO.Stream sRequest = request.GetRequestStream();
try
{
sRequest.Write(binPostData, 0, binPostData.Length);
}
finally
{
sRequest.Close();
}
}
}
private HttpWebRequest GetNewRequest(string sUrl)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sUrl);
request.CookieContainer = this.CookieContainer;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
return request;
}
public override void Submit()
{
//Login
HttpWebRequest request = GetNewRequest("http://mytest/login.asp");
base.SetData(request, "action=validate_login&login=test&password=test");
WebResponse response = request.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream());
string sResponse = sr.ReadToEnd();
//Entry screen
request = GetNewRequest("http://mytest/CustCreate.asp");
base.SetData(request, "Site=xyz&Cust=test");
response = request.GetResponse();
sr = new System.IO.StreamReader(response.GetResponseStream());
sResponse = sr.ReadToEnd();
//Sutmit
request = request = GetNewRequest("http://mytest/CustCreate.asp");
base.SetData(request, "Site=xyz&mydatahere&B1=Submit");
response = request.GetResponse();
sr = new System.IO.StreamReader(response.GetResponseStream());
sResponse = sr.ReadToEnd();
//How to delete cookies that have been saved?
}
要删除cookie,需要将其过期日期设置为过去的日期。这会告诉浏览器它已过期,浏览器将删除它 下面是一个关于如何在C#中实现这一点的示例(不确定您使用的是哪种语言)
我不是在创建cookie。我的代码是客户端,从服务器请求一个页面。所以这是JavaScript?可能想在你的问题中提到这一点。不管怎样,你只需要将cookie的expires属性设置为过去的日期。不,不是javascript。是C#我正在使用WebRequest对象。我已经编辑了我的帖子,添加了一些代码。如果cookie是在外部站点下创建的,我认为您无法删除它。这将是一个重大的安全漏洞。
if (Request.Cookies["UserSettings"] != null)
{
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}