首頁 web前端 js教程 javascript中cookie是什麼及怎麼讀取cookie?

javascript中cookie是什麼及怎麼讀取cookie?

Jul 22, 2017 pm 01:45 PM
cookie javascript 是什麼

 什麼是Cookie

由於HTTP是無狀態的協議,伺服器單從網路連線上無從知道客戶身分。怎麼辦呢?就給客戶端們頒發一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣伺服器就能從通行證上確認客戶身分了。這就是Cookie的工作原理。

Cookie其實是一小段的文字訊息。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再要求網站時,瀏覽器會把請求的網址連同該Cookie一同提交給伺服器。伺服器檢查該Cookie,以此來辨識用戶狀態。伺服器也可以根據需要修改Cookie的內容。

 Cookie機制

在程式中,會話追蹤是很重要的事情。理論上,一個使用者的所有請求操作都應該屬於同一個會話,而另一個使用者的所有請求操作則應該屬於另一個會話,二者不能混淆。例如,用戶A在超市購買的任何商品都應該放在A的購物車內,不論是用戶A什麼時間購買的,這都是屬於同一個會話的,不能放入用戶B或用戶C的購物車內,這不屬於同一個會話。

而Web應用程式是使用HTTP協定傳輸資料的。 HTTP協定是無狀態的協定。一旦資料交換完畢,客戶端與伺服器端的連線就會關閉,再次交換資料需要建立新的連線。這就意味著伺服器無法從連線上追蹤會話。即用戶A購買了一件商品放入購物車內,當再次購買商品時伺服器已經無法判斷該購買行為是屬於用戶A的會話還是用戶B的會話了。要追蹤該會話,必須引入一種機制。

Cookie就是這樣的一種機制。它可以彌補HTTP協定無狀態的不足。在Session出現之前,基本上所有的網站都採用Cookie來追蹤會話。

JS設定cookie:

假設在A頁面中要儲存變數username的值("jack")到cookie中,key值為name,則對應的JS程式碼為:


 document.cookie="name="+username;
登入後複製

無法在cookie 的名稱或值中使用分號(;)、逗號(,)、等號(=)以及空格。在cookie的名中做到這一點很容易,但要保存的值是不確定的。如何來儲存這些值呢?方法是用escape()函數進行編碼,它能將一些特殊符號使用十六進位表示,例如空格將會編碼為“20%”,從而可以存儲在cookie值中,而且使用此種方案還可以避免中文亂碼的出現。


document.cookie="str="+escape("I love ajax"); 
// document.cookie="str=I%20love%20ajax";
登入後複製

當使用escape()編碼後,取出值以後需要使用unescape()進行解碼才能得到原來的cookie值,

#JS讀取cookie:

假設cookie中儲存的內容為:name=jack;password=123

則在B頁面中取得變數username的值的JS程式碼如下:


var username=document.cookie.split(";")[0].split("=")[1];
//JS操作cookies方法!
//写cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
登入後複製

讀取cookies


function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
删除cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//使用示例
setCookie("name","hayden");
alert(getCookie("name"));
//如果需要设定自定义过期时间
//那么把上面的setCookie 函数换成下面两个函数就ok;
//程序代码
function setCookie(name,value,time)
{
var strsec = getsec(time);
var exp = new Date();
exp.setTime(exp.getTime() + strsec*1);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getsec(str)
{
alert(str);
var str1=str.substring(1,str.length)*1;
var str2=str.substring(0,1);
if (str2=="s")
{
return str1*1000;
}
else if (str2=="h")
{
return str1*60*60*1000;
}
else if (str2=="d")
{
return str1*24*60*60*1000;
}
}
//这是有设定过期时间的使用示例:
//s20是代表20秒
//h是指小时,如12小时则是:h12
//d是天数,30天则:d30
setCookie("name","hayden","s20");
登入後複製

以上是javascript中cookie是什麼及怎麼讀取cookie?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

請問ccsvchst.exe是哪一種進程? 請問ccsvchst.exe是哪一種進程? Feb 19, 2024 pm 11:33 PM

ccsvchst.exe是一種常見的進程文件,它是SymantecEndpointProtection(SEP)軟體的一部分,而SEP則是一款由著名的網路安全公司Symantec開發的終端保護解決方案。作為該軟體的一部分,ccsvchst.exe負責管理和監控SEP的相關進程。首先,我們來了解SymantecEndpointProtection(

cookie存在哪裡 cookie存在哪裡 Dec 20, 2023 pm 03:07 PM

Cookie通常儲存在瀏覽器的Cookie資料夾中的,瀏覽器中的Cookie檔案通常以二進位或SQLite格式存儲,如果直接開啟Cookie文件,可能會看到一些亂碼或無法讀取的內容,因此最好使用瀏覽器提供的Cookie管理介面來檢視和管理Cookie。

電腦上的cookie在哪裡 電腦上的cookie在哪裡 Dec 22, 2023 pm 03:46 PM

電腦上的Cookie儲存在瀏覽器的特定位置,具體位置取決於使用的​​瀏覽器和作業系統:1、Google Chrome, 儲存在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies中等等。

手機cookie在哪裡 手機cookie在哪裡 Dec 22, 2023 pm 03:40 PM

手機上的Cookie儲存在行動裝置的瀏覽器應用程式中:1、在iOS裝置上,Cookie儲存在Safari瀏覽器的Settings -> Safari -> Advanced -> Website Data中;2、在Android裝置上,Cookie儲存在Chrome瀏覽器的Settings -> Site settings -> Cookies中等等。

雙核心瀏覽器是什麼瀏覽器 雙核心瀏覽器是什麼瀏覽器 Feb 20, 2024 am 08:22 AM

雙核心瀏覽器是一種整合了兩個不同瀏覽器核心的瀏覽器軟體。核心是瀏覽器的核心部分,負責渲染網頁內容和執行網頁腳本等功能。傳統瀏覽器一般只使用單一的內核,如IE瀏覽器使用Trident內核,Chrome瀏覽器使用WebKit/Blink內核,火狐瀏覽器使用Gecko內核等。而雙核心瀏覽器則將兩個不同核心整合在一個瀏覽器中,使用者可以根據需要自由切換使用。雙核瀏覽器的出

瀏覽器cookie的儲存位置詳解 瀏覽器cookie的儲存位置詳解 Jan 19, 2024 am 09:15 AM

隨著網路的普及,我們使用瀏覽器進行上網已經成為一種生活方式。在日常使用瀏覽器過程中,我們常會遇到需要輸入帳號密碼的情況,如網購、社交、郵件等。這些資訊需要瀏覽器記錄下來,以便下次造訪時不需要再次輸入,這時候Cookie就派上了用場。什麼是Cookie? Cookie是指由伺服器端發送到使用者瀏覽器上並儲存在本地的一種小型資料文件,它包含了一些網站的使用者行為

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

Cookie設定的常見問題及解決方案 Cookie設定的常見問題及解決方案 Jan 19, 2024 am 09:08 AM

Cookie設定的常見問題及解決方案,需要具體程式碼範例隨著網路的發展,Cookie作為一種最常見的常規技術,已廣泛應用於網站和應用程式中。 Cookie,簡單來說,是一種儲存在使用者電腦上的資料文件,可用於儲存使用者在網站上的信息,包括登入名稱、購物車內容、網站首選項等等。 Cookie對於開發人員來說是必不可少的工具,但同時,Cookie設定常常會遇到

See all articles