成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

cookie入門

pingan8787 / 676人閱讀

摘要:一般如果用戶輸入的中的路徑部分從第一個(gè)字符開始包含屬性所定義的字符串,瀏覽器就認(rèn)為通過檢查。表明只有當(dāng)瀏覽器和服務(wù)器之間的通信協(xié)議為加密認(rèn)證協(xié)議時(shí),瀏覽器才向服務(wù)器提交相應(yīng)的。在中,用于保存狀態(tài)以及為瀏覽器提供一種身份識(shí)別機(jī)制。

Cookie 是瀏覽器訪問服務(wù)器后,服務(wù)器傳給瀏覽器的一段數(shù)據(jù)。
cookie是http協(xié)議的一部分,當(dāng)客戶端第一次向服務(wù)器端發(fā)送請(qǐng)求的時(shí)候,服務(wù)器會(huì)向客戶端發(fā)送一個(gè) cookie,用來保存一些信息,當(dāng)客戶端下次在向同一個(gè)服務(wù)器發(fā)送請(qǐng)求的時(shí)候,服務(wù)器通過識(shí)別客戶端的cookie,做出相應(yīng)的動(dòng)作。比如我們登陸一個(gè)網(wǎng)站的時(shí)候,這個(gè)網(wǎng)站記錄我們的用戶名和密碼,下次登陸就不用再輸入用戶名和密碼就可以直接登錄了。

Web 服務(wù)器通過發(fā)送一個(gè) Set-Cookie 的 HTTP 消息頭來創(chuàng)建一個(gè) cookie,Set-Cookie消息頭是一個(gè)字符串,其格式如下:

Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

在chrome控制臺(tái)中,我們可以通過開發(fā)者工具來查看服務(wù)器響應(yīng)請(qǐng)求后發(fā)送給瀏覽器的http消息頭,從而看到set-cookie,具體步驟如下:F12打開開發(fā)者工具→Network

同樣在開發(fā)者工具中,可以通過Application查看服務(wù)器發(fā)送了哪些cookie:

NAME:cookie的名稱,value是設(shè)置的cookie的值。

Expires:確定Cookie有效終止日期,指定 cookie 在什么時(shí)候不會(huì)再被發(fā)送到服務(wù)器,在這個(gè)指定時(shí)間后瀏覽器將會(huì)刪除這個(gè) cookie。DATE屬性值必須按照特定的格式:Wdy(周幾), Date-Month-Year HH:MM:SS GMT ,如果不是這種格式將不會(huì)被識(shí)別。在沒有設(shè)置 expires 選項(xiàng)時(shí),cookie 的生命周期僅限于當(dāng)前會(huì)話中,關(guān)閉瀏覽器 cookie文件會(huì)自動(dòng)消失。

Path:控制 Cookie 消息頭的發(fā)送時(shí)機(jī),用戶請(qǐng)求資源 URL 中存在Path指定的路徑時(shí),Web服務(wù)器才會(huì)發(fā)送Cookie 消息頭。一般如果用戶輸入的URL中的路徑部分從第一個(gè)字符開始包含Path屬性所定義的字符串,瀏覽器就認(rèn)為通過檢查。如果Path屬性的值為“/”,則Web服務(wù)器上所有的WWW資源均可讀取該Cookie。如果沒有設(shè)置path選項(xiàng),則Path的屬性值默認(rèn)為Web服務(wù)器傳給瀏覽器的資源的路徑名。

Domain:確定哪些Internet域中的Web服務(wù)器可讀取瀏覽器所存取的Cookie,即只有來自這個(gè)域的頁(yè)面才可以使用Cookie中的信息。未設(shè)置Domain選項(xiàng)時(shí),設(shè)置Cookie的屬性值為該Web服務(wù)器的域名。

需要注意的是,只有在 domain 選項(xiàng)核實(shí)完畢之后才會(huì)對(duì) path 屬性進(jìn)行比較。

SECURE:只有標(biāo)記沒有值,只有當(dāng)一個(gè)請(qǐng)求通過 SSL 或 HTTPS 創(chuàng)建時(shí),包含 secure 選項(xiàng)的 cookie 才能被發(fā)送至服務(wù)器。表明只有當(dāng)瀏覽器和Web 服務(wù)器之間的通信協(xié)議為加密認(rèn)證協(xié)議時(shí),瀏覽器才向服務(wù)器提交相應(yīng)的Cookie。

在JavaScript中,cookie用于保存狀態(tài)以及為web瀏覽器提供一種身份識(shí)別機(jī)制。在 JavaScript 中我們可以通過 document.cookie 屬性來創(chuàng)建、維護(hù)和刪除 cookie 。

設(shè)置cookie

document.cookie="userName = mavis ";

每個(gè)cookie都是一個(gè) name/value對(duì),若要一次設(shè)置多個(gè)name/value對(duì),可以用下面的方法:

document.cookie = "userName=mavis; userId = 023";

在cookie中,使用escape()函數(shù)進(jìn)行編碼,它能將一些特殊符號(hào)使用十六進(jìn)制表示,特殊符號(hào)有分號(hào)(;)、逗號(hào)(,)、等號(hào)(=)以及空格等。但是使用escape()編碼后,在取出值以后需要使用unescape()進(jìn)行解碼才能得到原來的cookie值。

JavaScript中escape() 函數(shù)可對(duì)字符串進(jìn)行編碼,這樣就可以在所有的計(jì)算機(jī)上讀取該字符串。語(yǔ)法如下:escape(string),string為要被轉(zhuǎn)義或編碼的字符串。

獲取cookie的值
使用document.cookie可直接獲得由分號(hào)隔開的多個(gè)name/value(名/值)組成的字符串。這些名/值對(duì)包括該域名下的所有cookie。

var myCookie = document.cookie;

獲取指定的cookie值,

    //設(shè)置兩個(gè)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的有效終止日期
當(dāng)我們第一次在某個(gè)網(wǎng)站登錄我們的ID是,有的網(wǎng)站會(huì)提醒是否保存該ID和密碼,在JavaScript中,實(shí)際上是給cookie設(shè)置一個(gè)有效日期:

document.cookie = "userId = 023; expiress = GMT_String";

這條語(yǔ)句是將userId這個(gè)cookie設(shè)置為GMT_String表示的過期時(shí)間,如果超過這個(gè)時(shí)間,cookie將會(huì)消失,不可以再被訪問。
設(shè)置cookie值在30天以后過期:

    //獲取當(dāng)前時(shí)間 
    var date=new Date(); 
    var expiresDays=30; 
    //將date設(shè)置為30天以后的時(shí)間 
    date.setTime(date.getTime()+expiresDays*24*3600*1000); 
    //將userId和userName兩個(gè)cookie設(shè)置為30天后過期 
    document.cookie = "userId = 023; userName = mavis; expires = " + date.toGMTString();     

刪除cookie
可將其有效終止日期設(shè)置為過去的時(shí)間:

var date=new Date(); 
//將date設(shè)置為過去的時(shí)間
date.setTime(date.getTime()-10000); 
document.cookie="userId=023; expires="+date.toGMTString();

這樣就可以把userId這個(gè)cookie刪除了。

指定可訪問cookie的路徑:通過設(shè)置path屬性來指定

//指定可訪問該cookie的目錄
document.cookie = "name = mavis; path = cookiePath"

//在整個(gè)網(wǎng)站都可訪問
    document.cookie = "name = mavis; path = /"

指定可訪問cookie的主機(jī)名:主機(jī)名是指同一個(gè)域下的不同主機(jī),一個(gè)主機(jī)中創(chuàng)建的cookie在另一個(gè)主機(jī)下是不能被訪問的,但可以通過domain參數(shù)來實(shí)現(xiàn)對(duì)其的控制。
如:document.cookie="name=value;domain=.baidu.com"; 這樣設(shè)置可使百度下的所有主機(jī)都可訪問該cookie。

一個(gè)例子:

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的值,生存時(shí)間半個(gè)小時(shí)
   alert(getCookie("test")); //取得cookie的值,顯示tank

但是在運(yùn)行的時(shí)候出了個(gè)問題,在我的chrome瀏覽器上不能顯示:

于是我上網(wǎng)查了以下原因,是因?yàn)閏hrome瀏覽器對(duì)cookie有限制,但是我給chrome瀏覽器的cookie已經(jīng)設(shè)置成“允許設(shè)置本地?cái)?shù)據(jù)”,但還是不行。看到這篇文章的大神,誰(shuí)能給我講講這是為啥嗎?感激不盡。

在edge瀏覽器上顯示出來是這樣的:

最后,路過的大神們,求你們幫忙解答一下chrome上不能執(zhí)行的問題,謝謝啦~~~~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80939.html

相關(guān)文章

  • cookie入門

    摘要:一般如果用戶輸入的中的路徑部分從第一個(gè)字符開始包含屬性所定義的字符串,瀏覽器就認(rèn)為通過檢查。表明只有當(dāng)瀏覽器和服務(wù)器之間的通信協(xié)議為加密認(rèn)證協(xié)議時(shí),瀏覽器才向服務(wù)器提交相應(yīng)的。在中,用于保存狀態(tài)以及為瀏覽器提供一種身份識(shí)別機(jī)制。 Cookie 是瀏覽器訪問服務(wù)器后,服務(wù)器傳給瀏覽器的一段數(shù)據(jù)。cookie是http協(xié)議的一部分,當(dāng)客戶端第一次向服務(wù)器端發(fā)送請(qǐng)求的時(shí)候,服務(wù)器會(huì)向客戶端發(fā)...

    vslam 評(píng)論0 收藏0
  • 前端相關(guān)大雜燴

    摘要:希望幫助更多的前端愛好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實(shí)踐譯者張捷滬江前端開發(fā)工程師當(dāng)你問起有關(guān)與時(shí),老司機(jī)們首先就會(huì)告訴你其實(shí)是個(gè)沒有網(wǎng)絡(luò)請(qǐng)求功能的庫(kù)。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡(jiǎn)單 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 評(píng)論0 收藏0
  • 爬蟲入門到精通-headers的詳細(xì)講解(模擬登錄知乎)

    摘要:本文章屬于爬蟲入門到精通系統(tǒng)教程第七講直接開始案例吧。本次我們實(shí)現(xiàn)如何模擬登陸知乎。 本文章屬于爬蟲入門到精通系統(tǒng)教程第七講 直接開始案例吧。 本次我們實(shí)現(xiàn)如何模擬登陸知乎。 1.抓包 首先打開知乎登錄頁(yè) 知乎 - 與世界分享你的知識(shí)、經(jīng)驗(yàn)和見解 注意打開開發(fā)者工具后點(diǎn)擊preserve log,密碼記得故意輸入錯(cuò)誤,然后點(diǎn)擊登錄 showImg(https://segmentfaul...

    changfeng1050 評(píng)論0 收藏0
  • flask入門1

    摘要:每天的內(nèi)容跑起來模板引擎表單文件上傳郵件發(fā)送一框架的簡(jiǎn)介模型負(fù)責(zé)數(shù)據(jù)的操作視圖負(fù)責(zé)數(shù)據(jù)的展示控制器控制你的的操作以及視圖模板的渲染在中叫做模型負(fù)責(zé)數(shù)據(jù)的操作控制你的的操作以及視圖模板的渲染業(yè)務(wù)邏輯的操作模板負(fù)責(zé)數(shù)據(jù)的展示二架構(gòu)三概念是 flask 每天的內(nèi)容 flask跑起來 模板引擎 flask表單 文件上傳郵件發(fā)送 flask-sqlalchemy 一、web框架的簡(jiǎn)介 M ...

    Freelander 評(píng)論0 收藏0
  • [應(yīng)用篇]第一篇 EL表達(dá)式入門

    摘要:概念表達(dá)式全名為,就是為了替代腳本表達(dá)式。作用獲取數(shù)據(jù)表達(dá)式主要用于替換頁(yè)面中的腳本表達(dá)式,以從各種類型的域中檢索對(duì)象獲取數(shù)據(jù)。調(diào)用方法表達(dá)式允許用戶開發(fā)自定義函數(shù),以在頁(yè)面中通過表達(dá)式調(diào)用類的方法。 概念 EL表達(dá)式:EL 全名為Expression Language,就是為了替代腳本表達(dá)式。 作用 獲取數(shù)據(jù):EL表達(dá)式主要用于替換JSP頁(yè)面中的腳本表達(dá)式,以從各種類型的web域中...

    李文鵬 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<