日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cookie的小知识

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cookie的小知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Cookie
Cookie是保存在客戶端的名稱/值的字符串對。當前瀏覽器從服務器響應中接收到Set-Cookie Http頭時,就會設置Cookie,稍后如果請求的URL與該Cookie相關的Path以及domain的

限制匹配時,瀏覽器會將該Cookie發送回服務器。
設置會話Cookie:
protected void page_load(object sender,EventArgs e)
{
??? HttpCookie cookie = new HttpCookie("name");
??? cookie.Value = "value";
??? this.Response.AppendCookie(cookie);
}
上面的Cookie,因為沒有設置過期時間,這個Cookie會一直保持到瀏覽器關閉。
在JavaScript創建Cookie:
function SetCookie(name,value){
??? document.cookie = name +'='+escape(value);
}
單個Cookie中多個名稱/值對:
HttpCookie cookie = new HttpCookie("name");
cookie.Vlaues["V1"] = "va1";
cookie.Vlaues["V2"] = "va2";
創建會生成一個單獨的Cookie,保存形式:name=v1=va1&v2=va2
Cookie屬性
除了名稱/值對外,Set-Cookie http頭還支持各種屬性,這些屬性會影響瀏覽器對Cookie的處理方式。
1、expires,該屬性包含一個時間,告訴瀏覽器它應該保存這個Cookie多長時間 ,后期之后,瀏覽器就會刪除這個Cookie。
protected void page_load(object sender,EventArgs e)
{
??? HttpCookie cookie = new HttpCookie("name");
??? cookie.Value = "value";
??? cookie.Expires = DateTime.Now.AddYears(1);
??? this.Response.AppendCookie(cookie);
}
在js中:
function SetCookie(name,value,minutes){
??? var exp = new Date(new Date().GetTime()+minutes*60000);
??? document.Cookie = name + '=' + escape(value) +';expires='+exp.ToGmtString();
}
要刪除Cookie,只要設置對應Cookie的expires屬性即可,設為過去的時間。
2、path該屬性是區分大小寫的字符串,為了讓瀏覽器能將Cookie發送給服務器,path屬性必須以url的domain路徑開始,path不僅僅可以設置為文件夾名稱。設置path的url必須指

定的path屬性字符串開始,以便匹配該屬性。
舉例:Http://www.cnblogs.com/ch03/page.aspx有效的path設置包括:
/ 、/ch 、/ch03 、/ch03/ 以及 /ch03/page
如果你的目的是將path指定為文件夾名,那么path應該以斜線結尾。
瀏覽器為相同的域名保存多個名稱相同的path不同的Cookie,因此有可能會接受到多個相同名稱的Cookie,要消除歧義并不容易,因此Cookie屬性,比如path不會在Cookie中返回

服務器中。
默認的path是/,意思是改域名下的所有的url,瀏覽器都會發送Cookie給服務器。
要設置path屬性,確保path限制作用:
protected void page_load(object sender,EventArgs e)
{
??? HttpCookie cookie = new HttpCookie("name");
??? cookie.Value = "value";
??? cookie.Path = "/ch03/";
??? this.Response.AppendCookie(cookie);
}
在js中:
function SetCookie(name,value,path){
??? document.Cookie = name + '=' + escape(value) +';path='+path;
}
3、domain該屬性告訴瀏覽器哪一個域名與Cookie相關聯,如果需要設置Cookie讓其對多個子域名可見,那就可以使用這個屬性。
對請求的url使用EndsWith()匹配比較domain屬性值,相匹配則Cookie可見:
protected void page_load(object sender,EventArgs e)
{
??? HttpCookie cookie = new HttpCookie("name");
??? cookie.Value = "value";
??? cookie.Domain = ".cnblogs.com";
??? this.Response.AppendCookie(cookie);
}
在js中:
function SetCookie(name,value,dom){
??? document.Cookie = name + '=' + escape(value) +';domain='+dom;
}
4、HttpOnly改屬性告訴瀏覽器該Cookie對Javascript不可見
protected void page_load(object sender,EventArgs e)
{
??? HttpCookie cookie = new HttpCookie("name");
??? cookie.Value = "value";
??? cookie.HttpOnly = true;
??? this.Response.AppendCookie(cookie);
}
5、secure該屬性只會是https頁面會發生給瀏覽器,不然不可見:
protected void page_load(object sender,EventArgs e)
{
??? HttpCookie cookie = new HttpCookie("name");
??? cookie.Value = "value";
??? cookie.Secure = true;
??? this.Response.AppendCookie(cookie);
}
在js中:
function SetCookie(name,value,dom){
??? document.Cookie = name + '=' + escape(value) +';secure';
}
6、讀取Cookie
protected void page_load(object sender,EventArgs e)
{
??? HttpCookie cookie = this.Request.Cookie["name"];
??? if(cookie!=null)
??? {
??????? string value = cookie.Value;
??? }
}
在js中:
function GetCookie(name){
??? var allcookies = document.Cookie;
??? var start= allcookies.indexof(name+'=');
??? if(start == -1)
??? {
?????? return null;
??? }
??? start += name.length+1;
??? var end = allcookies.indexof(';',start);
??? if(end == -1)
??? {
??????? end = allcookies.length;
??? }
??? var cookieval = allcookies.substring(start,end);
??? return unescape(cookieval);
}

總結

以上是生活随笔為你收集整理的Cookie的小知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。