在前后端分離的開(kāi)發(fā)中,往往需要前端通過(guò)獲取后端生成的cookie來(lái)進(jìn)行相關(guān)的操作,比如用戶(hù)登錄成功后保存登錄狀態(tài)等。在這篇文章中,我們將介紹如何使用Javascript獲取PHP生成的cookie。
首先,我們需要明確一點(diǎn),cookie是保存在客戶(hù)端的一小段文本數(shù)據(jù),當(dāng)瀏覽器向服務(wù)器發(fā)送請(qǐng)求時(shí),這些數(shù)據(jù)會(huì)被發(fā)送到服務(wù)器端,因此我們可以利用Javascript代碼來(lái)讀取服務(wù)器端發(fā)送給瀏覽器的cookie值。
以下是獲取cookie的基本方法:
function getCookie(name) {
var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
if (arr != null) return unescape(arr[2]); return null;
}
上述代碼中,我們通過(guò)傳入cookie名來(lái)獲取對(duì)應(yīng)的cookie值。
舉一個(gè)例子,比如我們?cè)赑HP程序中通過(guò)setcookie函數(shù)設(shè)置了一個(gè)名為username的cookie:
setcookie("username", "testuser", time()+3600);
那么我們可以通過(guò)getCookie函數(shù)來(lái)獲取對(duì)應(yīng)的cookie值:
var username = getCookie("username");
console.log(username); //testuser
需要注意的是,當(dāng)我們通過(guò)document.cookie屬性來(lái)獲取瀏覽器保存的所有cookie時(shí),它返回的是一個(gè)以分號(hào)分隔的字符串,內(nèi)容包括每個(gè)cookie的name和value值。因此我們需要通過(guò)字符串切分的方式來(lái)讀取對(duì)應(yīng)的cookie值。
如果我們需要獲取所有的cookie,可以使用以下代碼:
function getAllCookies() {
var cookies = {};
if (document.cookie && document.cookie != '') {
var split = document.cookie.split(';');
for (var i = 0; i< split.length; i++) {
var name_value = split[i].split('=');
name_value[0] = name_value[0].replace(/^\s+|\s+$/g, "");
cookies[decodeURIComponent(name_value[0])] = decodeURIComponent(name_value[1]);
}
}
return cookies;
}
上述代碼中,我們將所有的cookie值保存在一個(gè)對(duì)象中,通過(guò)分隔字符串的方式獲取每個(gè)cookie的name和value值,并刪除name和value兩端的空格。
總的來(lái)說(shuō),使用Javascript獲取PHP生成的cookie是非常方便的,只需要結(jié)合文中介紹的方法即可快速獲取到需要的cookie值,進(jìn)而實(shí)現(xiàn)一些相關(guān)的功能。