摘要:一般如果用戶輸入的中的路徑部分從第一個字符開始包含屬性所定義的字符串,瀏覽器就認為通過檢查。表明只有當瀏覽器和服務(wù)器之間的通信協(xié)議為加密認證協(xié)議時,瀏覽器才向服務(wù)器提交相應(yīng)的。在中,用于保存狀態(tài)以及為瀏覽器提供一種身份識別機制。
Cookie 是瀏覽器訪問服務(wù)器后,服務(wù)器傳給瀏覽器的一段數(shù)據(jù)。
cookie是http協(xié)議的一部分,當客戶端第一次向服務(wù)器端發(fā)送請求的時候,服務(wù)器會向客戶端發(fā)送一個 cookie,用來保存一些信息,當客戶端下次在向同一個服務(wù)器發(fā)送請求的時候,服務(wù)器通過識別客戶端的cookie,做出相應(yīng)的動作。比如我們登陸一個網(wǎng)站的時候,這個網(wǎng)站記錄我們的用戶名和密碼,下次登陸就不用再輸入用戶名和密碼就可以直接登錄了。
Web 服務(wù)器通過發(fā)送一個 Set-Cookie 的 HTTP 消息頭來創(chuàng)建一個 cookie,Set-Cookie消息頭是一個字符串,其格式如下:
Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
在chrome控制臺中,我們可以通過開發(fā)者工具來查看服務(wù)器響應(yīng)請求后發(fā)送給瀏覽器的http消息頭,從而看到set-cookie,具體步驟如下:F12打開開發(fā)者工具→Network
同樣在開發(fā)者工具中,可以通過Application查看服務(wù)器發(fā)送了哪些cookie:
NAME:cookie的名稱,value是設(shè)置的cookie的值。
Expires:確定Cookie有效終止日期,指定 cookie 在什么時候不會再被發(fā)送到服務(wù)器,在這個指定時間后瀏覽器將會刪除這個 cookie。DATE屬性值必須按照特定的格式:Wdy(周幾), Date-Month-Year HH:MM:SS GMT ,如果不是這種格式將不會被識別。在沒有設(shè)置 expires 選項時,cookie 的生命周期僅限于當前會話中,關(guān)閉瀏覽器 cookie文件會自動消失。
Path:控制 Cookie 消息頭的發(fā)送時機,用戶請求資源 URL 中存在Path指定的路徑時,Web服務(wù)器才會發(fā)送Cookie 消息頭。一般如果用戶輸入的URL中的路徑部分從第一個字符開始包含Path屬性所定義的字符串,瀏覽器就認為通過檢查。如果Path屬性的值為“/”,則Web服務(wù)器上所有的WWW資源均可讀取該Cookie。如果沒有設(shè)置path選項,則Path的屬性值默認為Web服務(wù)器傳給瀏覽器的資源的路徑名。
Domain:確定哪些Internet域中的Web服務(wù)器可讀取瀏覽器所存取的Cookie,即只有來自這個域的頁面才可以使用Cookie中的信息。未設(shè)置Domain選項時,設(shè)置Cookie的屬性值為該Web服務(wù)器的域名。
需要注意的是,只有在 domain 選項核實完畢之后才會對 path 屬性進行比較。
SECURE:只有標記沒有值,只有當一個請求通過 SSL 或 HTTPS 創(chuàng)建時,包含 secure 選項的 cookie 才能被發(fā)送至服務(wù)器。表明只有當瀏覽器和Web 服務(wù)器之間的通信協(xié)議為加密認證協(xié)議時,瀏覽器才向服務(wù)器提交相應(yīng)的Cookie。
在JavaScript中,cookie用于保存狀態(tài)以及為web瀏覽器提供一種身份識別機制。在 JavaScript 中我們可以通過 document.cookie 屬性來創(chuàng)建、維護和刪除 cookie 。
設(shè)置cookie:
document.cookie="userName = mavis ";
每個cookie都是一個 name/value對,若要一次設(shè)置多個name/value對,可以用下面的方法:
document.cookie = "userName=mavis; userId = 023";
在cookie中,使用escape()函數(shù)進行編碼,它能將一些特殊符號使用十六進制表示,特殊符號有分號(;)、逗號(,)、等號(=)以及空格等。但是使用escape()編碼后,在取出值以后需要使用unescape()進行解碼才能得到原來的cookie值。
JavaScript中escape() 函數(shù)可對字符串進行編碼,這樣就可以在所有的計算機上讀取該字符串。語法如下:escape(string),string為要被轉(zhuǎn)義或編碼的字符串。
獲取cookie的值:
使用document.cookie可直接獲得由分號隔開的多個name/value(名/值)組成的字符串。這些名/值對包括該域名下的所有cookie。
var myCookie = document.cookie;
獲取指定的cookie值,
//設(shè)置兩個cookie document.cookie = "userName=mavis"; document.cookie = "userId = 023"; //獲取cookie字符串 var myCookie = document.cookie; var arrCookie = myCookie.split(";"); var userName; for(var i = 0;i < arrCookie.length;i++){ var myArr = arrCookie[i].split("="); //找到名稱為userName的cookie,并返回值 if(userName = myArr[0]){ userName = myArr[1]; break; } } alert("welcome " + userName);
設(shè)置cookie的有效終止日期:
當我們第一次在某個網(wǎng)站登錄我們的ID是,有的網(wǎng)站會提醒是否保存該ID和密碼,在JavaScript中,實際上是給cookie設(shè)置一個有效日期:
document.cookie = "userId = 023; expiress = GMT_String";
這條語句是將userId這個cookie設(shè)置為GMT_String表示的過期時間,如果超過這個時間,cookie將會消失,不可以再被訪問。
設(shè)置cookie值在30天以后過期:
//獲取當前時間 var date=new Date(); var expiresDays=30; //將date設(shè)置為30天以后的時間 date.setTime(date.getTime()+expiresDays*24*3600*1000); //將userId和userName兩個cookie設(shè)置為30天后過期 document.cookie = "userId = 023; userName = mavis; expires = " + date.toGMTString();
刪除cookie:
可將其有效終止日期設(shè)置為過去的時間:
var date=new Date(); //將date設(shè)置為過去的時間 date.setTime(date.getTime()-10000); document.cookie="userId=023; expires="+date.toGMTString();
這樣就可以把userId這個cookie刪除了。
指定可訪問cookie的路徑:通過設(shè)置path屬性來指定
//指定可訪問該cookie的目錄 document.cookie = "name = mavis; path = cookiePath" //在整個網(wǎng)站都可訪問 document.cookie = "name = mavis; path = /"
指定可訪問cookie的主機名:主機名是指同一個域下的不同主機,一個主機中創(chuàng)建的cookie在另一個主機下是不能被訪問的,但可以通過domain參數(shù)來實現(xiàn)對其的控制。
如:document.cookie="name=value;domain=.baidu.com"; 這樣設(shè)置可使百度下的所有主機都可訪問該cookie。
一個例子:
function getCookie(name){ if (document.cookie.length>0){ start=document.cookie.indexOf(name + "=") if (start!=-1){ start=start + name.length+1 end=document.cookie.indexOf(";",start) if (end==-1) end=document.cookie.length return unescape(document.cookie.substring(start,end)) } } return "" } function setCookie(name,value,expiredays){ var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } setCookie("username","tank",1800); //設(shè)置cookie的值,生存時間半個小時 alert(getCookie("test")); //取得cookie的值,顯示tank
但是在運行的時候出了個問題,在我的chrome瀏覽器上不能顯示:
于是我上網(wǎng)查了以下原因,是因為chrome瀏覽器對cookie有限制,但是我給chrome瀏覽器的cookie已經(jīng)設(shè)置成“允許設(shè)置本地數(shù)據(jù)”,但還是不行。看到這篇文章的大神,誰能給我講講這是為啥嗎?感激不盡。
在edge瀏覽器上顯示出來是這樣的:
最后,路過的大神們,求你們幫忙解答一下chrome上不能執(zhí)行的問題,謝謝啦~~~~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/50247.html
摘要:一般如果用戶輸入的中的路徑部分從第一個字符開始包含屬性所定義的字符串,瀏覽器就認為通過檢查。表明只有當瀏覽器和服務(wù)器之間的通信協(xié)議為加密認證協(xié)議時,瀏覽器才向服務(wù)器提交相應(yīng)的。在中,用于保存狀態(tài)以及為瀏覽器提供一種身份識別機制。 Cookie 是瀏覽器訪問服務(wù)器后,服務(wù)器傳給瀏覽器的一段數(shù)據(jù)。cookie是http協(xié)議的一部分,當客戶端第一次向服務(wù)器端發(fā)送請求的時候,服務(wù)器會向客戶端發(fā)...
摘要:希望幫助更多的前端愛好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實踐譯者張捷滬江前端開發(fā)工程師當你問起有關(guān)與時,老司機們首先就會告訴你其實是個沒有網(wǎng)絡(luò)請求功能的庫。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡單 原文地址:Learning React.js is easier than you think 原文作...
摘要:本文章屬于爬蟲入門到精通系統(tǒng)教程第七講直接開始案例吧。本次我們實現(xiàn)如何模擬登陸知乎。 本文章屬于爬蟲入門到精通系統(tǒng)教程第七講 直接開始案例吧。 本次我們實現(xiàn)如何模擬登陸知乎。 1.抓包 首先打開知乎登錄頁 知乎 - 與世界分享你的知識、經(jīng)驗和見解 注意打開開發(fā)者工具后點擊preserve log,密碼記得故意輸入錯誤,然后點擊登錄 showImg(https://segmentfaul...
摘要:每天的內(nèi)容跑起來模板引擎表單文件上傳郵件發(fā)送一框架的簡介模型負責(zé)數(shù)據(jù)的操作視圖負責(zé)數(shù)據(jù)的展示控制器控制你的的操作以及視圖模板的渲染在中叫做模型負責(zé)數(shù)據(jù)的操作控制你的的操作以及視圖模板的渲染業(yè)務(wù)邏輯的操作模板負責(zé)數(shù)據(jù)的展示二架構(gòu)三概念是 flask 每天的內(nèi)容 flask跑起來 模板引擎 flask表單 文件上傳郵件發(fā)送 flask-sqlalchemy 一、web框架的簡介 M ...
摘要:概念表達式全名為,就是為了替代腳本表達式。作用獲取數(shù)據(jù)表達式主要用于替換頁面中的腳本表達式,以從各種類型的域中檢索對象獲取數(shù)據(jù)。調(diào)用方法表達式允許用戶開發(fā)自定義函數(shù),以在頁面中通過表達式調(diào)用類的方法。 概念 EL表達式:EL 全名為Expression Language,就是為了替代腳本表達式。 作用 獲取數(shù)據(jù):EL表達式主要用于替換JSP頁面中的腳本表達式,以從各種類型的web域中...
閱讀 1314·2021-11-04 16:09
閱讀 3516·2021-10-19 11:45
閱讀 2408·2021-10-11 10:59
閱讀 1022·2021-09-23 11:21
閱讀 2774·2021-09-22 10:54
閱讀 1149·2019-08-30 15:53
閱讀 2618·2019-08-30 15:53
閱讀 3490·2019-08-30 12:57