您的位置:

使用axios设置headers

一、axios设置header跨域

在前后端分离的开发中,前端常常需要通过ajax请求获取后端数据,而由于前后端分离的应用一般会使用不同的域名或端口,所以需要解决跨域问题。使用axios发送请求时,需要在headers中设置一些参数来解决跨域问题。

在axios的config对象中设置参数就可以解决跨域问题,以下是一个设置跨域header的示例:


axios.defaults.baseURL = 'http://localhost:3000'; //设置默认url
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //设置post请求的header
axios.defaults.withCredentials = true; //设置跨域携带cookies
axios({
    url: '/api/user',
    method: 'post',
    headers: {
        'Access-Control-Allow-Origin': '*'
    },
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

二、axios设置header解决跨域

在使用axios设置header时,有可能会遇到一些跨域问题。在此情况下,可以在请求头中设置Origin和Referer来解决跨域问题。


axios({
    url: '/api/user',
    method: 'post',
    headers: {
        'Access-Control-Allow-Origin': '*',
        'Origin':'http://www.example.com',
        'Referer': 'http://www.example.com/user'
    },
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

三、axios设置header无效

有时候在设置axios的header时会遇到一些无效的问题,这时候需要注意以下几点:

  • 检查请求路径是否正确
  • 检查请求方法是否正确
  • 检查请求头是否正确
  • 检查发送的数据是否符合要求
  • 检查服务器是否正确处理请求

下面是一个设置无效header的示例:


axios({
    url: '/api/user',
    method: 'post',
    headers: {
        'Content-Type': 'application/json'
    },
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

四、axios设置header不生效

有时候在设置axios的header时会遇到一些不生效的问题,这时候需要检查以下几点:

  • 是否在全局配置中设置了相同的header,导致覆盖了当前请求的header
  • 是否允许当前域请求对应的资源
  • 是否遵循同源策略限制
  • 是否发送的请求数据的编码格式不正确

以下是一个设置不生效header的示例:


axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;
axios({
    url: '/api/user',
    method: 'get',
    headers: {
        'Authorization': token
    },
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

五、axios设置请求超时时间

在axios中,可以设置请求超时时间,当请求超时时,会自动取消请求,避免无效请求的占用资源。


axios({
    url: '/api/user',
    method: 'get',
    timeout: 5000, //设置超时时间为5秒
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

六、axios设置请求头header

在axios中,可以自定义请求头header,以便于在接口中获取相关信息。


axios({
    url: '/api/user',
    method: 'post',
    headers: {
        'X-Requested-With': 'XMLHttpRequest',
        'Content-Type': 'application/json'
    },
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

七、axios设置cookie

在axios请求时,可以设置携带cookie,让服务器可以获取到前端的cookie值以判定身份信息。


axios({
    url: '/api/user',
    method: 'post',
    withCredentials:true, //设置是否携带cookie,默认false
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + token
    },
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

八、完整示例代码


axios.defaults.baseURL = 'http://localhost:3000'; //设置默认url
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //设置post请求的header
axios.defaults.withCredentials = true; //设置跨域携带cookies

axios({
    url: '/api/user',
    method: 'post',
    headers: {
        'Access-Control-Allow-Origin': '*'
    },
    data: {
        name: 'tony',
        job: 'engineer'
    }
}).then(function(response){
    console.log(response.data);
}).catch(function(error){
    console.log(error);
});

以上就是使用axios设置headers的详细介绍,希望对大家有所帮助!