我使用 Axios 與一個設定了 JWT 權杖的 API 進行交互。
該 API 在 cookie 中返回該令牌,我很快發現我需要在 Axios 選項中設置 withCredentials: true
:
import axios from 'axios'
axios.post(API\_SERVER + '/login', { email, password }, { withCredentials: true })
否則,cookie 將不會被保存。
我還需要在我發出的每個其他請求中設置它,以將 JWT 權杖發送到服務器:
axios.get(API\_SERVER + '/todos', { withCredentials: true })
現在,對於少量請求,這是可行的,但對於許多請求,您可能希望使用一個通用的配置。
您可以使用 create()
方法來創建一個新的 Axios 實例,然後在您的請求中使用它:
import axios from 'axios'
const instance = axios.create({
withCredentials: true
})
instance.get(API\_SERVER + '/todos')
通常還會添加一個 baseURL
屬性:
import axios from 'axios'
const instance = axios.create({
withCredentials: true,
baseURL: API\_SERVER
})
instance.get('todos')
在 React 中,我使用了 axios-hooks
,若要設定 withCredentials
,我使用了以下代碼:
import axios from 'axios'
import useAxios, { configure } from 'axios-hooks'
const instance = axios.create({
withCredentials: true,
baseURL: API\_SERVER,
})
configure({ instance })
const [{ data, loading, error }, refetch] = useAxios('todos')