axios 设置请求自动携带cookie

 前提是你之前要把cookie存到浏览器里 名字不限于cookie


export function request(config, params, login) {
  const instance = axios.create({
    baseURL: "http://localhost:3000",
    timeout: 30000,
    params: params,
    login,
    withCredentials: true, //主要是添加这一行
  })
### 使用 Axios 发送带有 Cookie 的 POST 请求 为了使 Axios 在发起 POST 请求时能够携带 Cookie,需要配置 `withCredentials` 属性并确保服务器端支持 CORS (跨源资源共享),允许凭证共享。具体来说: 当使用 Axios 进行跨域请求,默认情况下不会发送或接收 cookie。要改变这一行为,可以在创建 Axios 实例或者针对特定请求设置 `withCredentials` 选项为 `true`[^1]。 对于全局应用此设置,可以通过修改默认参数来完成: ```javascript axios.defaults.withCredentials = true; ``` 如果仅希望某些请求携带 cookies,则可以直接在单次请求中指定该属性: ```javascript axios.post('/api/login', { username: 'example', password: 'password' }, { withCredentials: true, }) .then(response => console.log(response)) .catch(error => console.error(error)); ``` 另外,为了让浏览器接受来自不同域名的服务端响应中的 Set-Cookie 头部信息,服务端也需要做相应的 CORS 配置,比如设置 Access-Control-Allow-Origin 和 Access-Control-Allow-Credentials 等头部字段[^2]。 最后,值得注意的是,在一些场景下可能还需要手动将 Cookies 添加到请求头里。这通常发生在非同源的情况下,因为即使设置了 `withCredentials=true`,部分环境下的浏览器仍然不允许自动附加 Cookies。此时可以利用拦截器机制自定义 Headers 来传递 Cookies: ```javascript const instance = axios.create({ baseURL: 'https://some-domain.com/api/', }); instance.interceptors.request.use(config => { const token = getCookie('your_cookie_name'); // 自定义获取cookie的方法 config.headers['Cookie'] = `your_cookie_name=${token}`; return config; }); ``` 上述方法适用于更复杂的场景,但在大多数情况下只需正确配置 `withCredentials` 即可满足需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值