无法在axios中设置标题

时间:2018-04-11 09:32:37

标签: reactjs ecmascript-6 axios

我无法通过axios设置标头,例如content-type as application / json。 axios不会抛出任何异常,但请求会获得" 415不支持的媒体类型"浏览器中的响应。我犯错的任何线索?

以下是代码 -

我尝试了两种方法。

方法1 -

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));

方法2 -

let config = {
    headers: {
        "Access-Control-Allow-Origin": "*",
        "Content-Type": "application/json"
    }
};
axios.get(url, config).then(
      response => this.loadData(response)).catch(
      (error) => this.showError(error));

1 个答案:

答案 0 :(得分:1)

您收到该错误是因为您没有使用您期望服务器响应的正确内容类型设置Accept标头。

为了避免这种情况,例如,您可以创建一个Axios实例(以便稍后将其导入到您在React.js应用程序中执行Axios调用的任何位置),您可以在其中设置您将执行的所有调用的默认标头与Axios。例如:

import axios from 'axios';

const instance = axios.create({
  baseURL: [YOUR BASE URL],
  timeout: 5000,
  headers: {
    'Accept-Version': 1,
    'Accept': 'application/json',
    'Access-Control-Allow-Origin': '*',
    'Content-Type': 'application/json; charset=utf-8',
  },
});

export default instance;

因此,您执行的所有呼叫都将具有正确的标头,您不必担心它们被正确设置。我还假设您将使用json身体请求和响应。