摘要:本文章整理自阮一峰參考每日一題簡述是什么什么是是服務器保存在瀏覽器的一小段文本信息。追蹤記錄和分析用戶行為。注意,這里不要求協議相同。屬性必須為絕對路徑,默認為當前路徑。屬性值必須是當前發送的域名的一部分。
Cookie
本文章整理自:阮一峰Cookie
參考「每日一題」簡述 Cookie 是什么
Cookie 是服務器保存在瀏覽器的一小段文本信息。瀏覽器每次向服務器發出請求,就會自動附上這段信息。
Cookie的作用Cookie 主要用來分辨兩個請求是否來自同一個瀏覽器
用來保存一些狀態信息,例如:
對話(session)管理:保存登錄、購物車等需要記錄的信息。
個性化:保存用戶的偏好,比如網頁的字體大小、背景色等等。
追蹤:記錄和分析用戶行為。
不推薦使用Cookie作為客戶端存儲,原因:
它的容量很小(4KB)
缺乏數據操作接口
而且會影響性能
客戶端儲存應該使用 Web storage API 和 IndexedDB。
Cookie的組成Cookie 包含以下幾方面的信息:
Cookie 的名字
Cookie 的值(真正的數據寫在這里面)(1、2兩點就是鍵值對 )
到期時間
所屬域名(默認是當前域名)
生效的路徑(默認是當前網址)
(3/4/5是cookie的屬性)
Cookie的作用過程舉例來說:
用戶訪問網址www.example.com,服務器在瀏覽器寫入一個 Cookie。這個 Cookie
就會包含www.example.com這個域名(第4點),以及根路徑/(第5點)。(這意味著,這個 Cookie 對該域名的根路徑和它的所有子路徑都有效。如果路徑設為/forums,那么這個 Cookie 只有在訪問www.example.com/forums及其子路徑時才有效。)
以后,瀏覽器一旦訪問這個路徑,瀏覽器就會附上這段 Cookie 發送給服務器。
Cookies作用范圍瀏覽器的同源政策規定,兩個網址只要域名相同和端口相同,就可以共享 Cookie(參見《同源政策》一章)。注意,這里不要求協議相同。也就是說,http://example.com設置的 Cookie,可以被https://example.com讀取
HTTP 協議中的Cookie HTTP 回應:Cookie 的生成(服務器端生成cookies)服務器如果希望在瀏覽器保存 Cookie,就要在 HTTP 回應的頭信息里面,放置一個Set-Cookie字段.
Set-Cookie:foo=bar
上面代碼會在瀏覽器保存一個名為foo的 Cookie,它的值為bar。
(設置的格式為:<鍵(名)>=<值>)
HTTP 回應可以包含多個Set-Cookie字段,即在瀏覽器生成多個 Cookie。下面是一個例子。
HTTP/1.0 200 OK Content-type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content]
除了 Cookie 的值,Set-Cookie字段還可以附加 Cookie 的屬性。
一個Set-Cookie字段里面,可以同時包括多個屬性,沒有次序的要求。
下面是設置一個Cookie的例子:除了名與它的值,還包含Domain屬性Secure屬性和HttpPnly屬性:
Set-Cookie:= ; Domain= ; Secure; HttpOnly
除了鍵=值來設置cookie的名字和值之外,還可以設置屬性。
Expires,Max-Age用來設置cookie持續時間
Domain,Path設置發送http請求時那些域名和路徑需要附帶這個Cookie
Secure屬性指定瀏覽器只有在加密協議 HTTPS 下才能發送
HttpOnly屬性指定該 Cookie 無法通過 JavaScript 腳本拿到
具體用法看這里Cookie 的屬性---阮一峰
HTTP 請求:Cookie 的發送(瀏覽器發送Cookie)瀏覽器向服務器發送 HTTP 請求時,每個請求都會帶上相應的 Cookie。也就是說,把服務器早前保存在瀏覽器的這段信息,再發回服務器。這時要使用 HTTP 頭信息的Cookie字段。
Cookie: foo=bar
上面代碼會向服務器發送名為foo的 Cookie,值為bar。
Cookie字段可以包含多個 Cookie,使用分號(;)分隔。
Cookie: name=value; name2=value2; name3=value3
下面是一個Http請求的例子。
GET /sample_page.html HTTP/1.1 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry
服務器收到瀏覽器發來的 Cookie 時,有兩點是無法知道的(因為這些Cookie的屬性只保存在瀏覽器上)。
Cookie 的各種屬性,比如何時過期。
哪個域名設置的 Cookie,到底是一級域名設的,還是某一個二級域名設的。
document.cookie讀寫當前網頁的Cookie 讀Cookie讀取的時候,它會返回當前網頁的所有 Cookie,前提是該 Cookie 不能有HTTPOnly屬性。
document.cookie // "foo=bar;baz=bar"寫Coookie
document.cookie屬性是可寫的,可以通過它為當前網站添加 Cookie。
等號兩邊不能有空格
document.cookie = "fontSize=14";
但是,document.cookie一次只能寫入一個 Cookie,而且寫入并不是覆蓋,而是添加。
document.cookie = "test1=hello"; document.cookie = "test2=world"; document.cookie // test1=hello;test2=world
寫入 Cookie 的時候,可以一起寫入 Cookie 的屬性。
document.cookie = "foo=bar; expires=Fri, 31 Dec 2020 23:59:59 GMT";
各個屬性的寫入注意點如下。
path屬性必須為絕對路徑,默認為當前路徑。
domain屬性值必須是當前發送 Cookie 的域名的一部分。比如,當前域名是example.com,就不能將其設為foo.com。該屬性默認為當前的一級域名(不含二級域名)。
max-age屬性的值為秒數。
expires屬性的值為 UTC 格式,可以使用Date.prototype.toUTCString()進行日期格式轉換。
document.cookie寫入 Cookie 的例子如下。
document.cookie = "fontSize=14; " + "expires=" + someDate.toGMTString() + "; " + "path=/subdirectory; " + "domain=*.example.com";
Cookie 的屬性一旦設置完成,就沒有辦法讀取這些屬性的值。
Cookie 的刪除刪除一個現存 Cookie 的唯一方法,是設置它的expires屬性為一個過去的日期。
document.cookie = "fontSize=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
上面代碼中,名為fontSize的 Cookie 的值為空,過期時間設為1970年1月1月零點,就等同于刪除了這個 Cookie。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/97693.html
摘要:保存中文上面我們的例子保存的是英文字符,下面我們來看下保存中文字符會怎么樣。出異常了中文屬于字符,英文數據字符,中文占個字符或者個字符,英文占個字符。如果為,則表示刪除該。的值規定為域名的隱私安全機制決定是不可跨域名的。 什么是會話技術 基本概念: 指用戶開一個瀏覽器,訪問一個網站,只要不關閉該瀏覽器,不管該用戶點擊多少個超鏈接,訪問多少資源,直到用戶關閉瀏覽器,整個這個過程我們稱為一...
摘要:追蹤記錄和分析用戶行為。屬性返回一個布爾值,表示瀏覽器是否打開功能不同瀏覽器對數量和大小的限制,是不一樣的。請求的發送瀏覽器向服務器發送請求時,每個請求都會帶上相應的。屬性必須為絕對路徑,默認為當前路徑。屬性值必須是當前發送的域名的一部分。 概述Cookie 與 HTTP 協議HTTP 回應:Cookie 的生成HTTP 請求:Cookie 的發送Cookie 的屬性Expires,M...
摘要:首先先來一段總結用于本地數據存儲,出現在服務器和瀏覽器交互的響應頭部和請求頭部中,受到單域名下的數量單個大小性能安全限制。子技術的出現緩解了單域名下的數量限制,關于子有一整套工具函數可以使用。 前言 本篇主要介紹Cookie技術的讀書總結,但是我認為邏輯上最好會和Web Storage技術放在一起進行對比,因此后續會再總結一篇關于WEB存儲的姊妹總結,敬請期待。 首先先來一段總結:Co...
摘要:首先先來一段總結用于本地數據存儲,出現在服務器和瀏覽器交互的響應頭部和請求頭部中,受到單域名下的數量單個大小性能安全限制。子技術的出現緩解了單域名下的數量限制,關于子有一整套工具函數可以使用。 前言 本篇主要介紹Cookie技術的讀書總結,但是我認為邏輯上最好會和Web Storage技術放在一起進行對比,因此后續會再總結一篇關于WEB存儲的姊妹總結,敬請期待。 首先先來一段總結:Co...
閱讀 2067·2021-11-23 09:51
閱讀 2212·2021-09-29 09:34
閱讀 3703·2021-09-22 15:50
閱讀 3563·2021-09-22 15:23
閱讀 2580·2019-08-30 15:55
閱讀 706·2019-08-30 15:53
閱讀 3076·2019-08-29 17:09
閱讀 2632·2019-08-29 13:57