全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

使用axios解决跨域问题

发布时间:2023-11-22 21:21:11
发布人:xqq

一、什么是跨域问题

当我们从一个域名的网页去请求另一个域名的资源时,就会面临跨域问题。跨域问题是出于浏览器的同源策略产生的,指的是协议、域名、端口号有一个不同就是跨域。

同源策略是浏览器最核心最基本的安全功能之一,同源策略的作用是保护用户隐私,防止一些恶意的网站窃取用户的信息。

二、跨域请求的解决方法

三、为什么使用axios解决跨域问题

axios是一个基于Promise的HTTP客户端,它可以在浏览器和Node.js中发送axios请求。与JQuery等库相比,axios更轻量级、更易扩展、更灵活,生态也更加活跃。近年来在前端领域广受欢迎。同时,axios也内置了可以处理跨域问题的配置项,使用方便,可以避免手动处理的繁琐和重复劳动,提高开发效率。

四、使用axios解决跨域问题的代码示例

1、打包代码

axios({
  method: 'get',
  url: 'http://example.com/user',
  params: {
    name: 'jerry',
    age: 18
  }
}).then(res => {
  console.log(res.data);
}).catch(err => {
  console.log(err);
});

2、开发环境代码

在开发环境中,我们可以在本地搭建一个代理服务器来解决跨域问题,如webpack-dev-server。

devServer: {
  proxy: {
    '/api': {
      target: 'http://example.com',
      changeOrigin: true,
      pathRewrite: {
        '^/api': '/api'
      }
    }
  }
}

3、JSONP代码

function jsonp(url, params, callback) {
  let script = document.createElement('script');
  let queryString = params ? Object.entries(params)
    .map(param => param.join('='))
    .join('&') : '';

  script.src = ${url}?callback=${callback}&${queryString};
  document.body.appendChild(script);
  return script;
}

jsonp('http://example.com/user', {name: 'jerry', age: 18}, (data) => {
  console.log(data);
});

4、CORS代码

axios.post('/api/getUserInfo', {
  name: 'jerry',
  age: 18
}, {
  headers: {
    Origin: 'http://localhost:8080'
  }
}).then(res => {
  console.log(res.data);
}).catch(err => {
  console.log(err);
});

5、CORS + 带凭证请求代码

axios.post('/api/getUserInfo', {
  name: 'jerry',
  age: 18
}, {
  headers: {
    Origin: 'http://localhost:8080',
    withCredentials: true
  }
}).then(res => {
  console.log(res.data);
}).catch(err => {
  console.log(err);
});

6、CORS + 预检请求代码

axios({
  method: 'post',
  url: '/api/getUserInfo',
  data: {
    name: 'jerry',
    age: 18
  },
  headers: {
    Origin: 'http://localhost:8080',
    'Content-Type': 'application/json;charset=UTF-8'
  }
}).then(res => {
  console.log(res.data);
}).catch(err => {
  console.log(err);
});

axios解决跨域问题

相关文章

Idea快捷键设置用法介绍

Idea快捷键设置用法介绍

2023-11-22
dts解码之linux,dts解码芯片都有哪些

dts解码之linux,dts解码芯片都有哪些

2023-11-22
Vue2转Vue3全面总结

Vue2转Vue3全面总结

2023-11-22
全局路径规划与局部路径规划

全局路径规划与局部路径规划

2023-11-22

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31