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