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

資訊專欄INFORMATION COLUMN

cookie

Eminjannn / 3396人閱讀

摘要:追蹤記錄和分析用戶行為。屬性返回一個布爾值,表示瀏覽器是否打開功能。超過限制以后,將被忽略,不會被設置。屬性指定瀏覽器只有在加密協議下,才能將這個發送到服務器。屬性值必須是當前發送的域名的一部分。

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

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

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

不推薦作為客戶端儲存,缺乏數據操作接口,而且會影響性能。客戶端儲存應該使用 Web storage API 和 IndexedDB。

Cookie 包含以下幾方面的信息:
1.Cookie 的名字
2.Cookie 的值(真正的數據寫在這里面)
3.到期時間
4.所屬域名(默認是當前域名)
5.生效的路徑(默認是當前網址)

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

// 瀏覽器是否打開 Cookie 功能
window.navigator.cookieEnabled // true

document.cookie屬性返回當前網頁的 Cookie。

一般來說,單個域名設置的 Cookie 不應超過30個,每個 Cookie 的大小不能超過4KB。超過限制以后,Cookie 將被忽略,不會被設置。

Cookie與 HTTP 協議

服務器如果希望在瀏覽器保存 Cookie,就要在 HTTP 回應的頭信息里面,放置一個Set-Cookie字段。

Set-Cookie:foo=bar//在瀏覽器保存一個名為foo的 Cookie,它的值為bar。

HTTP 回應可以包含多個Set-Cookie字段,即在瀏覽器生成多個 Cookie。

HTTP/1.0 200 OKContent-type: text/htm
lSet-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry
HTTP 請求:Cookie 的發送

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

Cookie: foo=bar//向服務器發送名為foo的 Cookie,值為bar

服務器收到瀏覽器發來的 Cookie 時,有兩點是無法知道的。
Cookie 的各種屬性,比如何時過期。
哪個域名設置的 Cookie,到底是一級域名設的,還是某一個二級域名設的。
例子:

GET /sample_page.html HTTP/1.1Host: www.example.orgCookie: yummy_cookie=choco; tasty_cookie=strawberry
Cookie 的屬性

Expires屬性指定一個具體的到期時間,到了指定時間以后,瀏覽器就不再保留這個 Cookie。它的值是 UTC 格式,可以使用Date.prototype.toUTCString()進行格式轉換。
如果不設置該屬性,或者設為null,Cookie 只在當前會話(session)有效,瀏覽器窗口一旦關閉,當前 Session 結束,該 Cookie 就會被刪除。瀏覽器根據本地時間,決定 Cookie 是否過期,由于本地時間是不精確的,所以沒有辦法保證 Cookie 一定會在服務器指定的時間過期。

Max-Age屬性指定從現在開始 Cookie 存在的秒數,比如60 60 24 * 365(即一年)。過了這個時間以后,瀏覽器就不再保留這個 Cookie。
如果Set-Cookie字段沒有指定Expires或Max-Age屬性,那么這個 Cookie 就是 Session Cookie,即它只在本次對話存在,一旦用戶關閉瀏覽器,瀏覽器就不會再保留這個 Cookie。

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

Secure屬性指定瀏覽器只有在加密協議 HTTPS 下,才能將這個 Cookie 發送到服務器。另一方面,如果當前協議是 HTTP,瀏覽器會自動忽略服務器發來的Secure屬性。該屬性只是一個開關,不需要指定值。如果通信是 HTTPS 協議,該開關自動打開。

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

document.cookie

document.cookie屬性用于讀寫當前網頁的 Cookie。
讀取的時候,它會返回當前網頁的所有 Cookie,前提是該 Cookie 不能有HTTPOnly屬性。
document.cookie // "foo=bar;baz=bar"

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

各個屬性的寫入注意點如下。
**1.path屬性必須為絕對路徑,默認為當前路徑。
2.domain屬性值必須是當前發送 Cookie 的域名的一部分。比如,當前域名是example.com,就不能將其設為foo.com。該屬性默認為當前的一級域名(不含二級域名)。
3.max-age屬性的值為秒數。
4.expires屬性的值為 UTC 格式,可以使用Date.prototype.toUTCString()進行日期格式轉換。**
document.cookie寫入 Cookie 的例子如下。

document.cookie = "fontSize=14; "
  + "expires=" + someDate.toGMTString() + "; "
  + "path=/subdirectory; "
  + "domain=*.example.com";

Cookie 的屬性一旦設置完成,就沒有辦法讀取這些屬性的值。

實現跨頁面傳值:

 var cookieUtil = {
            //添加cookie
            setCookie: function (name, value, expires) {
                var cookieText = encodeURIComponent(name) + "=" +
                    encodeURIComponent(value);
                if (expires && expires instanceof Date) {
                    cookieText += "; expires=" + expires;
                }
                // if (domain) {
                //     cookieText += "; domain=" + domain;
                // }
                document.cookie = cookieText;
            },
            //獲取cookie
            getCookie: function (name) {
                var cookieText = decodeURIComponent(document.cookie);
                var cookieArr = cookieText.split("; ");
                for (var i = 0; i < cookieArr.length; i++) {
                    var arr = cookieArr[i].split("=");
                    if (arr[0] == name) {
                        return arr[1];
                    }
                }
                return null;
            },
            //刪除cookie
            unsetCookie: function (name) {
                document.cookie = encodeURIComponent(name) + "=; expires=" +
                    new Date(0);
            }
        };
         //判斷是否存在cookie,或是第一次添加
                var arr = cookieUtil.getCookie("car") ? JSON.parse(cookieUtil.getCookie("car")) : [];
                var date = new Date();
                    date.setDate(date.getDate() + 1); //保存十天
                    //保存cookie
                    cookieUtil.setCookie("car", JSON.stringify(arr), date);
//讀取cookie
 var arr = cookieUtil.getCookie("car");
  if (arr) {
                arr = JSON.parse(arr);

                //存在cookie則取出來顯示到頁面上
                for (var i = 0; i < arr.length; i++) {
                ...}
            }

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

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

相關文章

  • Servlet第五篇【介紹會話技術、Cookie的API、詳解、應用】

    摘要:保存中文上面我們的例子保存的是英文字符,下面我們來看下保存中文字符會怎么樣。出異常了中文屬于字符,英文數據字符,中文占個字符或者個字符,英文占個字符。如果為,則表示刪除該。的值規定為域名的隱私安全機制決定是不可跨域名的。 什么是會話技術 基本概念: 指用戶開一個瀏覽器,訪問一個網站,只要不關閉該瀏覽器,不管該用戶點擊多少個超鏈接,訪問多少資源,直到用戶關閉瀏覽器,整個這個過程我們稱為一...

    binaryTree 評論0 收藏0
  • Cookic

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

    phoenixsky 評論0 收藏0
  • 客戶端數據存儲----Cookie From 《高程3》

    摘要:首先先來一段總結用于本地數據存儲,出現在服務器和瀏覽器交互的響應頭部和請求頭部中,受到單域名下的數量單個大小性能安全限制。子技術的出現緩解了單域名下的數量限制,關于子有一整套工具函數可以使用。 前言 本篇主要介紹Cookie技術的讀書總結,但是我認為邏輯上最好會和Web Storage技術放在一起進行對比,因此后續會再總結一篇關于WEB存儲的姊妹總結,敬請期待。 首先先來一段總結:Co...

    馬忠志 評論0 收藏0
  • 客戶端數據存儲----Cookie From 《高程3》

    摘要:首先先來一段總結用于本地數據存儲,出現在服務器和瀏覽器交互的響應頭部和請求頭部中,受到單域名下的數量單個大小性能安全限制。子技術的出現緩解了單域名下的數量限制,關于子有一整套工具函數可以使用。 前言 本篇主要介紹Cookie技術的讀書總結,但是我認為邏輯上最好會和Web Storage技術放在一起進行對比,因此后續會再總結一篇關于WEB存儲的姊妹總結,敬請期待。 首先先來一段總結:Co...

    since1986 評論0 收藏0

發表評論

0條評論

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