我是否每次都要更新每个cookie?

时间:2016-11-30 17:38:54

标签: c# sql-server

我正在使用我的c#应用向网页发送请求。在发送任何请求之前,我必须登录此网页。我希望每次我想做一些工作都避免记录,所以我将cookie存储在VARBINARY列的sql server数据库中。

让我们说我每天发送50 POST requests

 private string getRequest(string url, string postData = "")
        {
            try
            {
                System.Net.ServicePointManager.Expect100Continue = true;
                StreamReader reader;
                var request = WebRequest.Create(url) as HttpWebRequest;
                request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14";
                request.CookieContainer = Cookie;
                request.AllowAutoRedirect = true;
                request.ContentType = "application/x-www-form-urlencoded";
                request.Headers.Add("X-Requested-With", "XMLHttpRequest");
                postData = Uri.EscapeUriString(postData);
                request.Method = "POST";
                request.ContentLength = postData.Length;
                Stream requestStream = request.GetRequestStream();
                Byte[] postBytes = Encoding.ASCII.GetBytes(postData);

                requestStream.Write(postBytes, 0, postBytes.Length);
                requestStream.Close();

                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                foreach (Cookie tempCookie in response.Cookies)
                {
                    Cookie.Add(tempCookie);
                }
                reader = new StreamReader(response.GetResponseStream());
                string readerReadToEnd = reader.ReadToEnd();
                response.Close();

                database.updateCookie(AccountId, Cookie);  //here I am updating the cookies

                return readerReadToEnd;
            }
            catch { return ""; }

我是否真的需要在每次请求后更新Cookies?或者也许我可以在发送50 POST requests之后才更新我的Cookie?

我在问,因为有时我的饼干会持续几天,有时它们会在1分钟后死亡。我真的不知道为什么以及如何避免这种情况。

我是否必须存储最新的cookie,或者每次都可以使用相同的颜色?

1 个答案:

答案 0 :(得分:0)

每个站点决定特定cookie的有效期。因此,您需要单独获取每个站点的信息才能正确执行。注意cookie上的“过期”(在“set-cookie”响应标题中)可能会为您提供有关何时保证cookie过期的初步指导。

共同到期/有效范围:

  • 身份验证Cookie - 从10分钟到1天
  • ASP.Net会话状态 - 从20分钟
  • CSRF保护 - 可能会在每次回复时更新