在編寫(xiě)網(wǎng)絡(luò)應(yīng)用程序時(shí),很重要的一點(diǎn)就是維護(hù) HTTP cookie。HTTP cookie 是服務(wù)器在瀏覽器中存儲(chǔ)的小數(shù)據(jù)文件,用于識(shí)別獨(dú)特的用戶。Axios 是一個(gè)流行的 JavaScript 庫(kù),用于在 Web 應(yīng)用程序中發(fā)送 HTTP 請(qǐng)求和處理響應(yīng)。盡管 Axios 本身沒(méi)有 cookie 管理功能,但可以借助另一個(gè)庫(kù) js-cookie 輕松實(shí)現(xiàn)此功能。
import axios from 'axios'; import Cookies from 'js-cookie'; axios.defaults.withCredentials = true; axios.interceptors.request.use(function(config) { const token = Cookies.get('access_token'); config.headers.Authorization = `Bearer ${token}`; return config; }, function(error) { return Promise.reject(error); });
在上面的代碼塊中,我們首先導(dǎo)入了 axios 和 js-cookie 庫(kù)。然后,我們使用 withCredentials 屬性啟用跨站點(diǎn)資源共享(CORS)。接下來(lái),我們正在使用 axios 攔截器在請(qǐng)求標(biāo)頭中添加身份驗(yàn)證令牌。我們使用 js-cookie 庫(kù)從 cookie 中獲取訪問(wèn)令牌。
使用上面的代碼塊,您可以輕松地管理 HTTP cookie。當(dāng)您設(shè)置 axios.defaults.withCredentials = true 時(shí),Axios 會(huì)自動(dòng)將 Cookie 附加到每個(gè)請(qǐng)求上。類(lèi)似地,在響應(yīng)中接收到的 cookie 也會(huì)自動(dòng)響應(yīng),可供將來(lái)的請(qǐng)求使用。
需要注意的是,Apache 服務(wù)器默認(rèn)情況下不允許客戶端將 Cookie 發(fā)送到跨站點(diǎn)請(qǐng)求。為了解決此問(wèn)題,您需要在服務(wù)器端啟用 Access-Control-Allow-Credentials 標(biāo)頭并將其設(shè)置為 true。
當(dāng)然,如果您正在使用 node.js,您可能需要配置您的 app.js 示例文件。默認(rèn)情況下,當(dāng)使用 Axios 發(fā)出 HTTP 請(qǐng)求時(shí),Node.js 服務(wù)器具有相同的行為,無(wú)法共享 cookie。您可以使用以下代碼塊告訴您的服務(wù)器將 withCredentials 屬性設(shè)置為 true:
const express = require('express'); const app = express(); const cors = require('cors'); const corsOptions = { origin: 'http://localhost:8080', credentials: true }; app.use(cors(corsOptions));
當(dāng)在 Express.js 中使用上述代碼塊時(shí),您需要確保已在 app.js 文件中安裝 express,cors,body-parser 和 cookie-parser。
以上就是關(guān)于在 Vue 中使用 Axios 和 js-cookie 庫(kù)管理 HTTP cookie 的一些基本信息。Axios 是目前最受歡迎的 HTTP 客戶端之一,它提供了一些有用的功能,例如請(qǐng)求和響應(yīng)攔截器,從而使它在處理 cookie 方面非常實(shí)用。