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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Cookie 的规范介绍

發布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cookie 的规范介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目前有以下幾種 Cookie 規范:

  • Netscape cookie 草案:是最早的 cookie 規范,基于 rfc2109。盡管這個規范與 rc2109 有較大的差別,但是很多服務器都與之兼容。
  • rfc2109, 是 w3c 發布的第一個官方 cookie 規范。理論上講,所有的服務器在處理 cookie( 版本 1) 時,都要遵循此規范。遺憾的是,這個規范太嚴格了,以致很多服務器不正確的實施了該規范或仍在使用 Netscape 規范。
  • rfc2965 規范定義了 cookie 版本 2,并說明了 cookie 版本 1 的不足。

rfc2965 規范的使用,目前并不多。rfc2109 規范相應要嚴格得多,在實際應用上,并不是所有的瀏覽器和 Web 服務器都嚴格遵守。因此相比較而言,Netscape cookie 草案倒是一個比較簡潔和被廣泛支持的 Cookie 規范,因此我們在這里以 Netscape cookie 草案為基礎進行討論,對于其他兩種規范,我們的討論和代碼具有相同的意義。關于 Netscape cookie 草案的細節,大家可以參照 Netscape 官方站點,這里我們列舉一些和我們討論有關的內容。

根據 Netscape cookie 草案的描述,Cookie 是 Web 服務器向用戶的瀏覽器發送的一段 ASCII 碼文本。一旦收到 Cookie,瀏覽器會把 Cookie 的信息片斷以"名 / 值"對 (name-value pairs) 的形式儲存保存在本地。這以后,每當向同一個 Web 服務器請求一個新的文檔時,Web 瀏覽器都會發送之站點以前存儲在本地的 Cookie。創建 Cookie 的最初目的是想讓 Web 服務器能夠通過多個 HTTP 請求追蹤客戶。有些復雜的網絡應用需要在不同的網頁之間保持一致,它們需要這種會話狀態的保持能力。

瀏覽器與 Web 服務器通過 HTTP 協議進行通訊,而 Cookie 就是保存在 HTTP 協議的請求或者應答頭部(在 HTTP 協議中,數據包括兩部分,一部分是頭部,由一些名值對構成,用來描述要被傳輸數據的一些信息。一部分是主體 (body),是真正的數據(如 HTML 頁面等))進行傳送的。

在 HTML 文檔被發送之前,Web 服務器通過傳送 HTTP 包頭中的 Set-Cookie 消息把一個 cookie 發送到用戶的瀏覽器中。下面是一個遵循 Netscape cookie 草案的完整的 Set-Cookie 頭:


Set-Cookie:customer=huangxp; path=/foo; domain=.ibm.com; expires= Wednesday, 19-OCT-05 23:12:40 GMT; [secure]


Set-Cookie 的每個屬性解釋如下:

  • Customer=huangxp 一個"名稱=值"對,把名稱 customer 設置為值"huangxp",這個屬性在 Cookie 中必須有。
  • path=/foo 控制哪些訪問能夠觸發 cookie 的發送。如果沒有指定 path,cookie 會在所有對此站點的 HTTP 傳送時發送。如果 path=/directory,只有訪問 /directory 下面的網頁時,cookie 才被發送。在這個例子中,用戶在訪問目錄 /foo 下的內容時,瀏覽器將發送此 cookie。如果指定了 path,但是 path 與當前訪問的 url 不符,則此 cookie 將被忽略。
  • domain=.ibm.com 指定 cookie 被發送到哪臺計算機上。正常情況下,cookie 只被送回最初向用戶發送 cookie 的計算機。在這個例子中,cookie 會被發送到任何在 .ibm.com 域中的主機。如果 domain 被設為空,domain 就被設置為和提供 cookie 的 Web 服務器相同。如果 domain 不為空,并且它的值又和提供 cookie 的 Web 服務器域名不符,這個 Cookie 將被忽略。
  • expires= Wednesday, 19-OCT-05 23:12:40 GMT 指定 cookie 失效的時間。如果沒有指定失效時間,這個 cookie 就不會被寫入計算機的硬盤上,并且只持續到這次會話結束。
  • secure 如果 secure 這個詞被作為 Set-Cookie 頭的一部分,那么 cookie 只能通過安全通道傳輸(目前即 SSL 通道)。否則,瀏覽器將忽略此 Cookie。

一旦瀏覽器接收了 cookie,這個 cookie 和對遠端 Web 服務器的連續請求將一起被瀏覽器發送。例如 前一個 cookie 被存入瀏覽器并且瀏覽器試圖請求 URL http://www.ibm.com/foo/index.html 時,下面的 HTTP 包頭就被發送到遠端的 Web 服務器。

GET /foo/index.html HTTP/1.0
Cookie:customer=huangxp


一次典型的網絡瀏覽過程

在了解了 Cookie 協議的一些基本內容之后,讓我們看看一次典型的網絡瀏覽過程中瀏覽器如何識別和處理 Cookie:

    • 瀏覽器對于 Web 服務器應答包頭中 Cookie 的操作步驟:
      1. 從 Web 服務器的應答包頭中提取所有的 cookie。
      2. 解析這些 cookie 的組成部分(名稱,值,路徑等等)。
      3. 判定主機是否允許設置這些 cookie。允許的話,則把這些 Cookie 存儲在本地。
    • 瀏覽器對 Web 服務器請求包頭中所有的 Cookie 進行篩選的步驟:
      1. 根據請求的 URL 和本地存儲 cookie 的屬性,判斷那些 Cookie 能被發送給 Web 服務器。
      2. 對于多個 cookie,判定發送的順序。
      3. 把需要發送的 Cookie 加入到請求 HTTP 包頭中一起發送。

轉載于:https://www.cnblogs.com/zcy_soft/archive/2013/03/14/2958793.html

總結

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

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