2010-04-09 3 views
0

Я использую объект WebRequest для отправки данных на страницу входа в систему, а затем отправляю данные на отдельную страницу на том же сайте. Я создаю экземпляр CookieContainer и назначая его объекту WebRequest, чтобы обрабатывать файлы cookie. Проблема в том, что я не хочу сохранять файл cookie после отправки данных на другую страницу. Как удалить этот файл cookie?clear cookie container in WebRequest

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? 
} 

ответ

1

Чтобы удалить файл cookie, вам необходимо установить дату истечения срока его действия на дату в прошлом. Это говорит о том, что браузер истек, и браузер удалит его.

Здесь example from msdn о том, как это сделать на C# (не знаете, какой язык вы используете).

if (Request.Cookies["UserSettings"] != null) 
{ 
    HttpCookie myCookie = new HttpCookie("UserSettings"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 
+0

Я не создаю файл cookie. Мой код - это клиентская сторона, запрашивающая страницу с сервера. – Jeremy

+0

Итак, это JavaScript? Могу упомянуть об этом в вашем вопросе. –

+0

В любом случае вам просто нужно установить свойство expires файла cookie на прошлую дату. –

 Смежные вопросы

  • Нет связанных вопросов^_^