当前位置: 首页 > news >正文

axios 的 GET 请求里,手动写 Content-Type: application/json 基本都会被删掉不是你写法错了是 axios 源码故意这么做的

一、为什么 GET 的 Content-Type 会被删掉

看 axios 源码(xhr.js)里的逻辑:

if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { // Remove Content-Type if data is undefined delete requestHeaders[key]; }
  • GET 请求默认没有datarequestData === undefined
  • 只要是 GET,你在 headers 里写的 Content-Type 会被直接删掉
  • HTTP 规范本来也规定:Content-Type 是描述请求体的,GET 不该有 body

所以下面这种写法永远不生效

// ❌ 无效 axios.get('/api', { headers: { 'Content-Type': 'application/json' }, params: { ... } })

二、如果后端强行要这个头,怎么绕过

方案 1:请求拦截器里强行塞一个空 data(推荐)
axios.interceptors.request.use(config => { // 让 GET 也有 data,axios 就不会删 Content-Type if (config.method === 'get' && config.data === undefined) { config.data = null; // 或 {}、true 都行 } // 再统一设置 config.headers['Content-Type'] = 'application/json'; return config; });

之后正常写 get 即可:

axios.get('/api', { params: { ... } })

这时抓包会看到:

  • Content-Type: application/json
  • 不会真带 body,只是骗过 axios 的判断
方案 2:用 POST 伪装 GET(接口允许的话)
axios.post('/api', {}, { headers: { 'Content-Type': 'application/json' }, params: { ... } })
方案 3:全局默认头(配合拦截器)
axios.defaults.headers.common['Content-Type'] = 'application/json';

再配合上面拦截器给 GET 塞个 data,就能全局生效。


三、要不要这么做?

  • 正常 RESTful 接口:不需要。GET 就不该有 Content-Type,后端设计不合理。
  • 老旧 / 第三方接口:没办法,只能用上面拦截器的方式硬塞

简单总结:axios 会自动删除 GET 请求的 Content-Type,因为 GET 无 body。要强行保留,就在请求拦截器里给 GET 塞一个 data(null/{}),再统一设置 Content-Type 即可。

http://www.jsqmd.com/news/729919/

相关文章:

  • 扩散模型强化学习对齐:TreeGRPO优化与实践
  • 设计模式 - 结构型设计模式 - 装饰模式(Java)
  • 避开RH850U2A的坑:RAM未初始化导致ECC错?Flash驱动安全存放指南
  • Godot 3D网格实时变形插件:原理、应用与自定义开发指南
  • 2026川渝建筑拆除切割服务标杆名录:水下混凝土切割服务、混凝土开门洞切割服务、燃气管道工程钻孔切割服务、绳锯切割服务选择指南 - 优质品牌商家
  • Langchain mcp 可视化界面
  • Nordic nRF54LS05蓝牙SoC:低功耗BLE解决方案解析
  • 多方面因素驱动一念成仙业务2026年第一季度强劲增长深度解析
  • 双频门禁读卡器(13.56MHz 915MHz)通过融合高频(HF)与超高频(UHF)技术, “精准识别+高效通行” 的组合显著提升了门禁系统的灵活性与安全性。
  • 如何零代码实现五大媒体平台数据采集:MediaCrawler终极指南
  • 基于LLaMA与RLHF的大模型对齐实战:从SFT到PPO全流程解析
  • 无人机飞控与游戏角色控制:聊聊卡尔丹旋转顺序(Yaw-Pitch-Roll)的那些坑
  • Room 3.0:移动端持久化的“重生”变革
  • 2026全容积式蒸汽发生器厂家怎么选:供热系统设计、太阳能热水系统、成都锅炉、锅炉维修、供热储能系统、电容积式热水器选择指南 - 优质品牌商家
  • 洗涤机轴承优选指南:五强品牌深度评测与选型技巧 - 品牌策略师
  • 从比特币到企业应用:手把手带你用Hyperledger Fabric搭建一个简易联盟链Demo
  • AutoPage验证器:自动化网页质量评估的技术实践
  • Acrobat Pro隐藏技能:写几行JavaScript,让PDF书签自动变成Word式目录页
  • ComfyUI-Easy-Use:3大核心技术革新,彻底解决AI图像生成GPU资源管理难题
  • 别再死记硬背了!用Wireshark抓包实战,5分钟搞懂UDP和TCP报文到底长啥样
  • 从ViT到混合模型:我是如何用PyTorch复现CeiT和ConTNet,并在Kaggle皮肤癌数据集上刷到新高的
  • 视觉语言模型的高熵令牌攻击与防御策略
  • FLASH-SEARCHER框架:并行推理与工具调用的AI代理系统
  • 语音情绪识别中的标签聚合与主观性处理方法
  • 告别理论推导!用Python+Matlab复现WMMSE算法,搞定多用户MIMO波束成形优化
  • ARM SVE2 UMULLB指令解析与性能优化实践
  • 2026乐山小语种机构选择推荐:核心维度与案例解析 - 优质品牌商家
  • 动态负提示技术:AI艺术创作的创意突破
  • MVAug多模态视频生成技术解析与应用实践
  • 如何3步掌握Flash逆向分析:JPEXS免费反编译工具终极指南