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

Node.js使用Axios携带Cookie发起POST请求调用Zeppelin API方法

问题解决方法

你现有代码存在两个核心错误,修改后即可正常调用:

  • axios.post参数位置传错:Axios的POST方法参数顺序为请求URL、请求体、配置项,你把headers配置放到了本该传请求体的第二个参数位置,导致请求头根本没生效。执行笔记接口不需要额外传请求体,第二个参数填空对象即可。
  • Cookie请求头带了冗余属性:Path=/和HttpOnly是服务端返回Set-Cookie响应头时的属性,客户端发起请求时不需要加,只需要传JSESSIONID的键值对即可。

修正后的代码

const zeppelinNoteRun = async function(loginCookie){
    return new Promise((resolve, reject) => {
        const cookieHeader = `JSESSIONID=${loginCookie}`
        axios
        // 第二个参数是空请求体,第三个参数才是headers配置
        .post(process.env.ZEPPELIN_URL + 'notebook/job/2G9P1992Z/20210615-091750_1582099873', {}, {
            headers:{
                Cookie: cookieHeader
            } 
        })
        .then(res => {
            console.log(`statusCode: ${res.status}`);
            return resolve(res);
        })
        .catch(error => {
            console.error(error);
            return reject(error);
        });
    });
}

另外你可以先确认下process.env.ZEPPELIN_URL的配置是否包含/api/后缀,curl里的接口路径是/api/login和/api/notebook/...,如果配置的URL里没有/api/后缀,拼接后就会出现路径错误,需要补上。


更简洁的实现方案(无需手动解析Cookie)

你可以直接创建一个共享的Axios实例,开启withCredentials配置,实例会自动保存登录接口返回的Cookie,后续所有用该实例发起的请求都会自动携带Cookie,不需要你手动解析和拼接Cookie头:

const axios = require('axios')
// 创建Zeppelin专用的axios实例
const zeppelinAxios = axios.create({
  baseURL: process.env.ZEPPELIN_URL,
  withCredentials: true // 自动保存和携带Cookie
})

// 登录方法
const zeppelinLogin = async function(){
    await zeppelinAxios.post('login', 'userName=admin&password=admin')
}

// 执行笔记方法
const zeppelinNoteRun = async function(){
    const res = await zeppelinAxios.post('notebook/job/2G9P1992Z/20210615-091750_1582099873')
    console.log(`statusCode: ${res.status}`)
    return res
}

// 调用示例
// ;(async () => {
//   await zeppelinLogin()
//   await zeppelinNoteRun()
// })()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:00:01