我正在使用 Axios 从客户端向我的 Express.js 服务器发送请求。
我在客户端上设置了一个 cookie,我想从所有 Axios 请求中读取该 cookie,而无需手动将它们添加到手动请求中。
这是我的客户端请求示例:
axios.get(`some api url`).then(response => ...
我尝试通过在我的 Express.js 服务器中使用这些属性来访问标头或 cookie:
req.headers req.cookies
它们都不包含任何cookies。我正在使用 cookie 解析器中间件:
app.use(cookieParser())
如何让 Axios 在请求中自动发送 cookie?
编辑:
我像这样在客户端上设置cookie:
import cookieClient from 'react-cookie' ... let cookie = cookieClient.load('cookie-name') if(cookie === undefined){ axios.get('path/to/my/cookie/api').then(response => { if(response.status == 200){ cookieClient.save('cookie-name', response.data, {path:'/'}) } }) } ...
虽然它也在使用 Axios,但它与问题无关。一旦设置了 cookie,我只想将 cookie 嵌入到我的所有请求中。
你可以使用withCredentials属性。
withCredentials
来自不同域的 XMLHttpRequest 无法为其自己的域设置 cookie 值,除非在发出请求之前将 withCredentials 设置为 true。
axios.get(BASE_URL + '/todos', { withCredentials: true });
还可以对每个 Axios 请求强制凭据
axios.defaults.withCredentials = true
或者使用一些 Axios 请求的凭据作为以下代码
const instance = axios.create({ withCredentials: true, baseURL: BASE_URL }) instance.get('/todos')