總結C#收集編程中關於Cookie的設定要點。本站提示廣大學習愛好者:(總結C#收集編程中關於Cookie的設定要點)文章只能為提供參考,不一定能成為您想要的結果。以下是總結C#收集編程中關於Cookie的設定要點正文
花了2地利間,完全弄清C#中cookie的內容,弄清以下內容將讓你對一切網站的cookie都盡在控制當中.
cookieCollection是一個針對一個域一切的cookie的聚集
cookeContainer是一個容器,外面可以裝多個域的cookie的聚集,即一個
cookieContainer可以包括多個cookieCollection,這個容器可以界說年夜小,決議
最多裝若干個cookie,假如裝滿了還要再裝,它會主動剔除本來過時的cookie.
再說到一個cookie的構造:
Cookie由變量名和值構成,相似Javascript變量。其屬性裡既有尺度的Cookie
變量,也有效戶本身創立的變量,屬性中變量是用“變量=值”情勢來保留。
依據Netscape公司的劃定,Cookie格局以下:
Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;
Domain=DOMAIN_NAME;SECURE
NAME=VALUE:
這是每個Cookie均必需有的部門。NAME是該Cookie的稱號,VALUE是該
Cookie的值。在字符串“NAME=VALUE”中,不含分號、逗號和空格等
字符。
Expires=DATE:Expires變量是一個只寫變量,它肯定了Cookie有用終止日
期。該屬性值DATE必需以特定的格局來書寫:禮拜幾,
DD-MM-YY HH:MM:SS GMT,GMT表現這是格林尼治時光。反之,不以如許的格
式來書寫,體系將沒法辨認。該變量可省,假如缺省時,
則Cookie的屬性值不會保留在用戶的硬盤中,而僅僅保留在內存傍邊,Cookie
文件將跟著閱讀器的封閉而主動消逝。
Domain=DOMAIN-NAME:Domain該變量是一個只寫變量,它肯定了哪些
Internet域中的Web辦事器可讀取閱讀器所存取的Cookie,即只要來自這
個域的頁面才可使用Cookie中的信息。這項設置是可選的,假如缺省時,設
置Cookie的屬性值為該Web辦事器的域名。
Path=PATH:Path屬性界說了Web辦事器上哪些途徑下的頁面可獲得辦事器
設置的Cookie。普通假如用戶輸出的URL中的途徑部門從第一個字符
開端包括Path屬性所界說的字符串,閱讀器就以為經由過程檢討。假如Path屬性的
值為“/”,則Web辦事器上一切的WWW資本都可讀取該Cookie。異樣
該項設置是可選的,假如缺省時,則Path的屬性值為Web辦事器傳給閱讀器的資
源的途徑名。
可以看出我們借助對Domain和Path兩個變量的設置,便可有用地掌握
Cookie文件被拜訪的規模。
Secure:在Cookie中標志該變量,注解只要當閱讀器和Web Server之間的
通訊協定為加密認證協定時,閱讀器才向辦事器提交響應的
Cookie。以後這類協定只要一種,即為HTTPS。
以上的cookie內容中,真正發送給辦事器的內容,只要NAME和VALUE對,其他器械
都是給客戶真個閱讀器用來治理cookie的,好比能否寄存在硬盤上?寄存多久?這
閱讀器在拜訪哪一個網站的時刻要發這個cookie.
這幾個類型的轉換辦法:
cookieContainer.GetCookies()取得cookieCollection,而cookieCollection直
接加索引號取得某一個詳細的cookie,
cookieContainer.add()可以添加cookie或許cookieCollection,乃至直接用
http的頭中的cookie信息便可以直接往cookieContainer中添加cookie,用
cookieContainer.SetCookies(Uri, string)來完成,個中的string就是cookie的字符串內容,這個字符串可以經由過程response.Headers.Get("Set-Cookie")取得,這裡留意一點,SetCookies()函數中的Uri,不克不及和cookie字符串中的域名Domain完整雷同,好比Uri=new Uri("http://.谷歌.com"),而cookie中的
Domain=.谷歌.com,這個時刻cookieContainer.SetCookies()函數將會報錯,
提醒域名不准確,處理辦法是,uri = new Uri("http://www.谷歌.com")便可,
橫豎改成其他的相似途徑都可以,為何不克不及雷同,誰曉得呢,問微軟去.就這個
處所的成績,害我耗了幾個小時.
CookieContainer.GetCookieHeader()函數可以讀出cookieContainer中一切指
定網站的cookie,以字符串方法顯示.
本身想要輸出字符串零丁結構cookie,也很簡略,Cookie的結構函數就弄定.
cookie操作實例
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public class Cookie { /// <summary> /// Cookies賦值 /// </summary> /// <param name="strName">主鍵</param> /// <param name="strValue">鍵值</param> /// <param name="strDay">有用天數</param> /// <returns></returns> public bool setCookie(string strName, string strValue, int strDay) { try { HttpCookie Cookie = new HttpCookie(strName); //Cookie.Domain = ".xxx.com";//當要跨域名拜訪的時刻,給cookie指定域名便可,格局為.xxx.com Cookie.Expires = DateTime.Now.AddDays(strDay); Cookie.Value = strValue; System.Web.HttpContext.Current.Response.Cookies.Add(Cookie); return true; } catch { return false; } } /// <summary> /// 讀取Cookies /// </summary> /// <param name="strName">主鍵</param> /// <returns></returns> public string getCookie(string strName) { HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName]; if (Cookie != null) { return Cookie.Value.ToString(); } else { return null; } } /// <summary> /// 刪除Cookies /// </summary> /// <param name="strName">主鍵</param> /// <returns></returns> public bool delCookie(string strName) { try { HttpCookie Cookie = new HttpCookie(strName); //Cookie.Domain = ".xxx.com";//當要跨域名拜訪的時刻,給cookie指定域名便可,格局為.xxx.com Cookie.Expires = DateTime.Now.AddDays(-1); System.Web.HttpContext.Current.Response.Cookies.Add(Cookie); return true; } catch { return false; } } }