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

Axios无法设置Content-Type请求头,返回415错误求排查思路

问题原因分析 & 解决方案

首先得戳破核心问题:GET请求完全不需要设置Content-Type: application/json!

为什么会触发415错误?

Content-Type头的作用是告诉服务器「请求体里的数据格式是什么」,但GET请求默认是没有请求体的——你硬给它加这个头,服务器收到后会一脸困惑:你说请求体是JSON格式,但我根本没收到任何请求体内容啊?自然就返回415 Unsupported Media Type报错了。

针对你的两种方案的修正建议

方案1的修正

如果只是发起普通GET请求,直接删掉设置默认头的代码就行:

import axios from 'axios';
// 删掉这行多余的设置:axios.defaults.headers.common['Content-Type'] = 'application/json';
axios.get(url)
  .then(response => this.loadData(response))
  .catch(error => this.showError(error));

要是你的实际需求是发送JSON格式的请求体(比如POST/PUT这类带请求体的请求),那才需要设置Content-Type,而且要搭配正确的请求方法:

import axios from 'axios';
axios.post(url, { username: 'test', password: '123' }, {
  headers: {
    'Content-Type': 'application/json'
  }
})
.then(response => this.loadData(response))
.catch(error => this.showError(error));

(其实Axios在你传入JS对象作为请求体时,会自动帮你设置Content-Type: application/json,这行头配置甚至可以省略)

方案2的补充(假设你想单独配置请求)

如果要单独给请求加配置,记住GET请求别加Content-Type;如果是POST/PUT这类带请求体的请求,正确写法是这样:

import axios from 'axios';

let config = {
  method: 'post', // 必须是post/put等带请求体的方法
  url: url,
  headers: { 
    'Content-Type': 'application/json'
  },
  data: { key: 'value' } // 要有对应的请求体数据,这个头才有意义
};

axios(config)
.then(response => this.loadData(response))
.catch(error => this.showError(error));

额外提醒

别随便给所有请求默认设置Content-Type,尤其是GET请求,这纯粹是给自己挖坑;如果服务器确实要求GET请求带特殊头,一定要先确认服务器期望的具体头信息是什么,别硬塞application/json。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:34:28