好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Cookies的各方面知識(基礎/高級)深度了解

Cookies的各方面知識(基礎/高級)深度了解

熱門標簽:申請400電話手續 蘋果手機凱立德地圖標注 預測式外呼系統使用說明 百度ai地圖標注 同安公安400電話怎么申請流程 南陽外呼系統定制化 玉林市機器人外呼系統哪家好 電話機器人軟件銷售工作 合肥電銷外呼系統哪家公司做的好

一,前言

Cookies想必所有人都了解, 但是未必所有人都精通。本文講解了Cookies的各方面知識。

二,基礎知識

1.什么是Cookies

Cookie 是一小段文本信息,伴隨著用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。Cookie 包含每次用戶訪問站點時 Web 應用程序都可以讀取的信息。

例如,如果在用戶請求站點中的頁面時應用程序發送給該用戶的不僅僅是一個頁面,還有一個包含日期和時間的 Cookie,用戶的瀏覽器在獲得頁面的同時還獲得了該 Cookie,并將它存儲在用戶硬盤上的某個文件夾中。

以后,如果該用戶再次請求您站點中的頁面,當該用戶輸入 URL 時,瀏覽器便會在本地硬盤上查找與該 URL 關聯的 Cookie。如果該 Cookie 存在,瀏覽器便將該 Cookie 與頁請求一起發送到您的站點。然后,應用程序便可以確定該用戶上次訪問站點的日期和時間。您可以使用這些信息向用戶顯示一條消息,也可以檢查到期日期。

Cookie 與網站關聯,而不是與特定的頁面關聯。因此,無論用戶請求站點中的哪一個頁面,瀏覽器和服務器都將交換 Cookie 信息。用戶訪問不同站點時,各個站點都可能會向用戶的瀏覽器發送一個 Cookie;瀏覽器會分別存儲所有 Cookie。

Cookie 幫助網站存儲有關訪問者的信息。一般來說,Cookie 是一種保持 Web 應用程序連續性(即執行狀態管理)的方法。除短暫的實際交換信息的時間外,瀏覽器和 Web 服務器間都是斷開連接的。對于用戶向 Web 服務器發出的每個請求,Web 服務器都會單獨處理。但是在很多情況下,Web 服務器在用戶請求頁時識別出用戶會十分有用。例如,購物站點上的 Web 服務器跟蹤每位購物者,這樣站點就可以管理購物車和其他的用戶特定信息。因此,Cookie 可以作為一種名片,提供相關的標識信息幫助應用程序確定如何繼續執行。

使用 Cookie 能夠達到多種目的,所有這些目的都是為了幫助網站記住用戶。例如,一個實施民意測驗的站點可以簡單地將 Cookie 作為一個 Boolean 值,用它來指示用戶的瀏覽器是否已參與了投票,這樣用戶便無法進行第二次投票。要求用戶登錄的站點則可以通過 Cookie 來記錄用戶已經登錄,這樣用戶就不必每次都輸入憑據。

2.Cookies如何存儲

Cookies保存在用戶的本地機器上,不同的瀏覽器存儲在不同的文件夾中,并且按照域名分別保存。即網站之間的Cookies不會彼此覆蓋。

IE瀏覽器的用戶可以通過在本地的文檔中找到Cookies的txt文件, 不同操作系統的位置不同,windows server 2003/xp都保存在:

C:\Documents and Settings\Administrator\Cookies 文件夾下。

其中名稱txt按照域名保存,比如localhost域下的cookies為:

administrator@localhost[1].txt 或者 administrator@localhost[2].txt

其中后面的[1]和[2]是隨著每次保存交替變化的。

3.Cookies如何傳遞

Cookies的信息是在Web服務器和瀏覽器之間傳遞的。保存在Http請求中。

(1)請求頁面

在請求一個頁面的Http頭中,會將屬于此頁面的本地Cookies信息加在Http頭中,注意下面加粗的部分:

復制代碼 代碼如下:

GET /Cookies/Test.aspx HTTP/1.1
Host: localhost:1335
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 GTB5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: My.Common.TestCookieInfo=Pkid=999TestValue=aaabbbcccdddeee

(2)頁面響應

如果頁面要求寫入Cookies信息,則返回的Http如下,注意加粗的部分:

復制代碼 代碼如下:

HTTP/1.x 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Thu, 06 Aug 2009 03:40:59 GMT
X-AspNet-Version: 2.0.50727
Set-Cookie: My.Common.TestCookieInfo=Pkid=999TestValue=aaabbbcccdddeee; expires=Fri, 07-Aug-2009 03:40:59 GMT; path=/
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 558
Connection: Close

4.Cookies如何查看

(1)查看Cookies的txt文件

IE用戶可以直接查看Cookies的txt文件。
比如:C:\Documents and Settings\Administrator\Cookies\administrator@localhost[1].txt

(2)使用插件

FF下使用Web Developer插件可以很方便的查看、刪除和修改Cookies:

插件截圖:

 

查看頁面Cookies:

三. Cookies高級知識

1.Cookie 的限制

大多數瀏覽器支持最大為 4096 字節的 Cookie。

瀏覽器還限制站點可以在用戶計算機上存儲的 Cookie 的數量。大多數瀏覽器只允許每個站點存儲 20 個 Cookie;注意這里的20個是指主鍵值,也就是20條Cookies記錄,但是每個Cookies記錄還可以包含若干子鍵,下面會詳細解釋。如果試圖存儲更多 Cookie,則最舊的 Cookie 便會被丟棄。有些瀏覽器還會對它們將接受的來自所有站點的 Cookie 總數作出絕對限制,通常為 300 個。

2.Cookies的存儲格式

Cookies可以包含一個主鍵, 主鍵再包含子鍵。比如asp.net中獲取Cookies的格式是:

復制代碼 代碼如下:

Request.Cookies[key][subkey].ToString();

其中的key就是主鍵,subkey就是主鍵關聯的子鍵。

(1)本地磁盤存儲格式:

復制代碼 代碼如下:

My.Common.TestCookieInfo
Pkid=999TestValue=aaabbbcccdddeee
localhost/
1536
3059603968
30021392
2348960464
30021191
*

其中的Pkid=999TestValue=aaabbbcccdddeee 是Cookies的值,由于使用了subkey=subvalue的格式, 所以此Cookies是包含子鍵的。

(2)Javascript中的Cookie格式

在Javascript中給的Cookie是一個字符串,通過document.cookies獲取。字符格式如下:

My.Common.SubKey=Pkid=999TestValue=aaabbbcccdddeee; SingleKey=SingleKeyValue

上面的字符串包含了兩個Cookies,一個是不包含子鍵的SingleKey, 一個是包含pkid和TextValue兩個子鍵的My.Common.SubKey,兩個Cookie通過“;”分割。

(3)Asp.Net中的Cookies格式

和所有的服務器端語言一樣,Asp.Net中使用集合類保存Cookies集合:

復制代碼 代碼如下:

public sealed class HttpCookieCollection : NameObjectCollectionBase
{...}

通過HttpResquest和HttpResponse對象的Cookies屬性,可以獲取和寫入當前頁面的Cookies。

3.Cookies的內容編碼格式

Cookies的值中可以保存除了“;”以外的標點符號。但是不能保存漢字。保存漢字會出現亂碼。

所以對于Cookies中的內容要進行統一的編碼和解碼。為了在瀏覽器端和服務器端都能夠進行解碼和編碼, 所以要統一使用UTF編碼格式。

主要是因為javascript中只能使用UTF編碼格式。

4.Cookies的Path屬性

Cookies的Path屬性表示當前的Cookies可以作用在網站的那個路徑下。

比如下面的兩個同名的Cookies:

允許存在兩個同名但是Path不同的Cookies。

無論是服務器端還是客戶端,在獲取時優先獲取本頁路徑下面的Cookies。

也就是說如果在、/chapter10/路徑下面的頁面, 獲取testKey這個Cookies的值,則只能獲取到testValue222222這個值。

5.Cookies的過期時間

如果保存Cookies時未設置過期時間, 則Cookies的過期時間為“當前瀏覽器進程有效”,即和Session一樣關閉瀏覽器后則消失。在asp.net中還可以通過設置HttpCookie對象的過期時間為DateTime.MinValue來指定此Cookies為跟隨瀏覽器生效。(這句話來之不易啊,在腦袋等人的幫助下才查到的。)

如果設置了過期時間并且大于當前時間,則會保存Cookies值。

如果設置了過期時間但是小于等于當前時間,則清除Cookies值。

6.Cookies與Session

有時我們會忽略Cookies與Session的關系。但是兩者是密不可分的。

Session的唯一標示:SessionID是通常保存在Cookies中的(也可以保存在URL中)。對于Asp.Net而言,SessionID保存在鍵值為“ASP.NET_SessionId”的Cookies中,如圖:

因為Cookies的存儲數量是有限制的,所以我們的系統在保存Cookies的時候一定要注意防止沖掉這一個關鍵的Cookies。在下文介紹的最佳實踐-以強對象方式保存Cookies的代碼中特意對這個Cookies做了處理。

7.Cookies加密

在設置Cookies的屬性時,有一個選項Secure用來控制Cookie的加密特性。

如果通過 SSL 連接 (HTTPS) 傳輸 Cookie,則為 true;否則為 false。默認為 false。

如果我們保存一個Cookies并設置加密,那么在非HTTPS的頁面中,無論是使用javascript還是服務器端都無法獲得此Cookies。但是在本地依然可以看到此Cookies的存在。

8.Cookies與Ajax

如果Ajax請求訪問一個服務器頁面,此服務器頁面是可以向用戶瀏覽器寫入Cookies和Session的。

四. Cookies最佳實踐

在了解了Cookies的相關知識后,下面提出最佳的事件方法。其中包括客戶端和服務器端兩部分。

(1)Asp.Net 中保存Cookies

通常,我們使用Request和Response對象來直接操作Cookies:

寫入Cookies:

復制代碼 代碼如下:

Response.Cookies["k1"].Value = "k1Value";
Response.Cookies["k2"]["k2-1"] = "k2-1Value";
Response.Cookies.Add(new HttpCookie("k3", "k3Value"));

讀取Cookies:
復制代碼 代碼如下:

Request["k1"] ;
Request.Cookies["k1"].Value ;
Request.Cookies["k2"]["k2-1"];
Request.Cookies.Get(0).Value;

注意Request["k1"]這個大家熟悉的獲取get和post參數的方法,同時還能夠獲取Cookies的值!

另外上面語句中的有些是必須通過Value屬性訪問的,有些則不需要。

(2)以對象方式保存Cookies

下面提供一個可以以對象方式整體保存Cookies的工具類。并且只占用一條Cookies,所有的屬性都存在子鍵上。

源代碼:

復制代碼 代碼如下:

/// summary>
/// Cookies基類。將需要保存Cookies的數據類此類派生,可以將強類型對象在Cookies中的保存和讀取。
/// /summary>
/// remarks>
/// 2009.8.6 ziqiu.zhang created
/// /remarks>
/// example>
/// 假設MyCookiesInfo是從 從Cookies中獲取對象:
/// code>
/// CookieInfo item = new CookieInfo(); //new以后已經從Cookies中構造了對象。
/// /code>
/// 將對象保存在Cookies中:
/// code>
/// CookieInfo item = new CookieInfo();
/// item.value = "test value";
/// item.SetCookies("1"); //Cookies有效期為1天
/// /code>
/// /example>
[System.Serializable]
public class CookieInfo
{
#region ==================== Constructed Method ====================
/// summary>
/// 構造函數
/// /summary>
public CookieInfo()
{
}
#endregion
#region ==================== Public Method ====================
/// summary>
/// 得到當前Cookies的過期時間
/// /summary>
/// returns>過期時間/returns>
public DateTime GetExpiresTime()
{
string cookieName = GetType().ToString();
if (HttpContext.Current.Request.Cookies[cookieName] != null)
{
return HttpContext.Current.Request.Cookies[cookieName].Expires;
}
return DateTime.MinValue;
}
/// summary>
/// 保存Cookies,過期時間為瀏覽器關閉則失效。
/// /summary>
/// param name="expiresTime">Cookies過期事件/param>
/// returns>是否保存成功/returns>
public bool Save()
{
return this.Save(DateTime.MinValue);
}
/// summary>
/// 保存Cookies,需要指定過期時間。
/// /summary>
/// param name="expiresTime">Cookies過期事件/param>
/// returns>是否保存成功/returns>
public bool Save(DateTime expiresTime)
{
string CookieName = GetType().ToString();
HttpCookie SessionCookie = null;
//對 SessionId 進行備份.
if (HttpContext.Current.Request.Cookies["ASP.NET_SessionId"] != null)
{
string SesssionId = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value.ToString();
SessionCookie = new HttpCookie("ASP.NET_SessionId");
SessionCookie.Value = SesssionId;
}
//設定cookie 過期時間.
DateTime dtExpiry = expiresTime;
HttpContext.Current.Response.Cookies[CookieName].Expires = dtExpiry;
//設定cookie 域名.
string domain = string.Empty;
if (HttpContext.Current.Request.Params["HTTP_HOST"] != null)
{
//domain = "www.elong.com";
domain = HttpContext.Current.Request.Params["HTTP_HOST"].ToString();
}
//如果是www.elong.com或多級域名,需要轉化為elong.com
if (domain.IndexOf(".") > -1)
{
string[] temp = domain.Split('.');
if (temp.Length >= 3)
{
domain = temp[temp.Length - 2].Trim() + "." + temp[temp.Length - 1].Trim();
}
HttpContext.Current.Response.Cookies[CookieName].Domain = domain;
}
//把類的屬性, 寫入Cookie.
PropertyInfo[] Propertys = GetType().GetProperties();
foreach (PropertyInfo pi in Propertys)
{
object oj = pi.GetValue(this, null);
Type type = pi.PropertyType;
string valueStr = string.Empty;
if (oj != null oj.ToString() != string.Empty)
{
if (type == Type.GetType("System.DateTime"))
{
valueStr = ((DateTime)oj).ToString("yyyy/MM/dd HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
else
{
valueStr = oj.ToString();
}
HttpContext.Current.Response.Cookies[CookieName][pi.Name] = HttpUtility.UrlEncode(valueStr);
}
}
//如果cookie總數超過20 個, 重寫ASP.NET_SessionId, 以防Session 丟失.
if (HttpContext.Current.Request.Cookies.Count > 20 SessionCookie != null)
{
if (SessionCookie.Value != string.Empty)
{
HttpContext.Current.Response.Cookies.Remove("ASP.NET_SessionId");
HttpContext.Current.Response.Cookies.Add(SessionCookie);
}
}
return true;
}
/// summary>
/// 找回Cookie值
/// /summary>
public void Load()
{
string cookieValue = string.Empty;
string CookieName = GetType().ToString();
//通過遍歷屬性, 從cookie 中找回值, 回寫到屬性.
PropertyInfo[] Propertys = GetType().GetProperties();
foreach (PropertyInfo pi in Propertys)
{
try
{
cookieValue = HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies[CookieName][pi.Name].ToString());
}
catch
{
cookieValue = string.Empty;
}
if (pi.CanWrite cookieValue != null cookieValue != string.Empty)
{
try
{
object obb = cookieValue;
Type type = pi.PropertyType;
obb = Convert.ChangeType(obb, type);
pi.SetValue(this, obb, null);
}
catch { }
}
}
}
#endregion
}


使用

首先說明如何使用此類。

為想要保存在Cookies中的類建立模型,并且繼承自CookieInfo即可。比如下面建立了MyCookieInfo類,其中包含屬性pkid,TestValue和TestDateTime:

復制代碼 代碼如下:

/// summary>
/// 保存Cookies的數據對象
/// /summary>
[System.Serializable]
public class MyCookieInfo : CookieInfo
{
private int m_Pkid = 0;
public int Pkid
{
get
{
return m_Pkid ;
}
set
{
m_Pkid = value ;
}
}

private string m_TestValue = "";
public string TestValue
{
get
{
return m_TestValue;
}
set
{
m_TestValue = value;
}
}

private DateTime m_TestDateTime = DateTime.Now;
public DateTime TestDateTime
{
get
{
return m_TestDateTime;
}
set
{
m_TestDateTime = value;
}
}
}

接下來就可以使用對象的Save和Load方法保存和讀取Cookies:
復制代碼 代碼如下:

•保存
Save方法有兩個重載,不帶參數的Save方法表示Cookies的過期時間與瀏覽器相同,即瀏覽器關閉則Cookies消失。否則需要傳入Cookies過期時間。
MyCookieInfo testCookies = new MyCookieInfo();
testCookies.Pkid = 1;
testCookies.TestValue = "中文測試";
testCookies.Save(); •讀取

MyCookieInfo testCookies = new MyCookieInfo();
testCookies.Load();
this.lblMsg.Text = "Pkid:" + testCookies.Pkid.ToString();
this.lblMsg.Text += ",TestValue:" + testCookies.TestValue.ToString();
this.lblMsg.Text += ",TestDateTime:" + testCookies.TestDateTime.ToString("yyyy/MM/dd HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo);

現在我們已經可以將一個強類型的對象讀取和保存Cookies了。
(3)使用Javascript操作Cookies

在客戶端我們同樣需要操作Cookies。

下面是封裝了的專門用于操作Cookies的jQuery工具函數。
當然此工具函數稍加修改,就可以變成標準的Javascript函數。

下載地址

工具函數說明:

方法簽名: jQuery.cookie(name, subName, value,  options)

方法說明:讀取、寫入、刪除Cookies

方法參數:

名稱 說明 舉例
name cookies的主鍵值 讀取主鍵:
$.cookie("singleKey")

寫入cookies,值為字符串:
$.cookie("singleKey", "", "singleKey-value", { expires: 1, path: "/", secure: false })
subName 子鍵名稱。在寫入時請傳遞空或者null 讀取子鍵:
$.cookie("multiKey", "subName1")

寫入cookies,值為對象:
var subNameObj = { subName1: "aaa", subName2: "bbb", subName3: "ccc" };$.cookie("multiKey", "", subNameObj, { expires: 1, path: "/", secure: false });
value Cookies值,可以是字符串或者對象。
如果是對象,則將對象的每個屬性保存在Cookies子鍵。
參見上面實例。
options 參數:
expires:可以是數字或者Data類型的對象。
如果傳入數字表示幾天后過期。
path:路徑,默認為域名根目錄(“/”)。
secure:是否啟用加密,默認為否。



指定過期時間:

var myDate = new Date();myDate.setFullYear(2009, 10, 10);$.cookie("singleKey", "", "singleKey-value", { expires: myDate, secure: false })  

1天后過期:

var time = Date();$.cookie("singleKey", "", "singleKey-value", { expires: 1, path: "/", secure: false })

標簽:海南 南昌 臺州 南京 南京 淄博 揚州 嘉興

巨人網絡通訊聲明:本文標題《Cookies的各方面知識(基礎/高級)深度了解》,本文關鍵詞  Cookies,的,各方面,知識,基礎,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Cookies的各方面知識(基礎/高級)深度了解》相關的同類信息!
  • 本頁收集關于Cookies的各方面知識(基礎/高級)深度了解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 啊灬灬用力灬嗯灬3p| 天天草天天射| 久久综合AV| 怪物玩弄群NP高H黄暴| 在线观看免费黄网站| 成人a**| 美女裸体秘?无遮挡胸图| ?国产嫩草影院?聂小雨| 日本性交| 夜夜爽妓女77777免费观看| 大肥臀风间由美中文字幕| 欧美handjob手交手活| 欧美亚洲愉拍一区二区 | 男人j桶进女人p无遮挡全程| 999视频精品全部免费观看 | 韩国三级大全久久网站| 乌克兰少妇性做爰| 欧美影院在线观看完整版mp4| 日本黄漫无码??漫画观看| 国产WW久久久久久久久久| 午夜黄色大片| 夜夜嗨A片蜜臀久久久| 欧美成人69| 日韩一区精品视频在线看 | 免费免播放器在线视频观看| 恋上骄傲女上司| 男女吃奶做爰视频免费观看| 96国产精品| 老师让我亲她内裤里的东西| 免费无遮挡??漫画网站| 免费一级毛片私人影院a行| 1819岁macbook日本| 久久9999| 精品无码人妻一区三区久久久久 | 97国产大学生情侣11在线视频| 女生呻吟声| 午夜十二点正片高清电影| 日本少妇高潮XXXXⅩOOO| 波多野结衣手机在线| 免费一级婬片AA毛A片爽爽网| 国产精品XXXWWW丝袜美女|