You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js环境下Axios发送POST请求未携带Cookie报401问题求助

问题根因与修复方案

核心错误

你调用axios.post时参数传递顺序不符合Axios的方法约定:

  • GET请求的语法为 axios.get(url, 配置对象),因此你之前的GET请求写法是完全正确的
  • POST请求的语法为 axios.post(url, 请求体数据, 配置对象),你错误将请求头、请求体数据都合并到了第二个参数(本该是请求体的位置),导致你定义的Cookie头根本没有被Axios识别生效,所以请求没有携带认证信息返回401。

代码修正

第一步:修复createInfo方法

你不需要手动对请求体做JSON序列化,Axios会根据你预设的Content-Type: application/json自动处理,修正后的代码如下:

const createInfo = async(cookieAuth, infoName) => {
    try {
        return await api.post('endpoint/a', 
            // 第二个参数直接传请求体对象
            { name: infoName },
            // 第三个参数传配置对象,包含headers
            {
                headers: {
                    Cookie: cookieAuth
                }
            }
        )
    } catch (error) {
        console.log(error);
    }
};

第二步(可选):修正Axios实例配置笔误

你初始化Axios实例时的请求头配置键名存在笔误,正确键名为headers而非header,建议修正避免后续其他配置不生效:

const api = axios.create({
    baseURL: 'http://mylocalserver:myport/api/',
    // 修正为headers
    headers: {
        'Content-type' : 'application/json',
    },
    withCredentials: true,
    responseType: 'json'
});

可选优化说明

如果你是在浏览器环境下使用,你已经在实例配置中开启了withCredentials: true,只要后端跨域配置符合要求(Access-Control-Allow-Credentials为true、Access-Control-Allow-Origin不能设置为通配符*),浏览器会自动携带会话Cookie,不需要你手动从set-cookie取出再拼装到请求头里,可以简化代码。

内容的提问来源于stack exchange,提问作者Henri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:45:02