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

使用Axios发送GraphQL Post请求返回HTML而非JSON的问题求助

GraphQL Axios请求返回登录页HTML的排查方案

可能的原因及解决步骤

1. 请求头缺失关键字段

Postman会自动携带部分默认请求头,Axios若未配置完全,可能触发服务端的身份校验拦截。需确保包含Content-Type(GraphQL请求必须指定为application/json),部分服务还会校验User-Agent字段,模拟客户端请求可绕过拦截。

修正示例代码:

const axios = require('axios');

const ENDPOINT = '你的接口地址';
const TOKEN = '你的令牌';

axios.post(ENDPOINT, {
  query: `你的GraphQL查询语句`
}, {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${TOKEN}`,
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
  }
})
.then(res => console.log(res.data))
.catch(err => console.error(err.response.data));

2. Cookie会话验证问题

部分服务依赖Cookie维持会话,Postman可能保存了登录后的Cookie,而Axios默认不携带Cookie。开启withCredentials选项可解决:

axios.post(ENDPOINT, {
  query: `你的GraphQL查询语句`
}, {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${TOKEN}`
  },
  withCredentials: true
})

3. Token携带方式不匹配

确认服务端要求的Token位置:是Authorization头,还是自定义头(如x-api-key)?对照Postman的请求头配置,确保Axios的携带方式完全一致。

4. 自动跟随重定向导致拦截

若服务端返回3xx重定向到登录页,Axios默认会自动跟随,最终返回登录页HTML。禁用自动重定向可查看原始响应,排查重定向原因:

axios.post(ENDPOINT, {
  query: `你的GraphQL查询语句`
}, {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${TOKEN}`
  },
  maxRedirects: 0
})

5. 网络环境差异

Postman与Node.js的网络环境可能不同(如Node.js运行在代理环境下),导致请求被拦截。可尝试禁用代理测试:

axios.post(ENDPOINT, {
  query: `你的GraphQL查询语句`
}, {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${TOKEN}`
  },
  proxy: false
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:17:07