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