为什么要解决跨域问题:
在单文件组件中如何去解决跨域问题:
如何配置反向代理代码:
用axios向后端数据接口发起请求,拿回数据:
下载:
npm i --save axios
引入 axios模块:
import axios from 'axios'
发axios请求:
后端数据接口:猫眼验证中心
mounted () {axios.get('/api/mmdb/movie/v3/list/hot.json?ct=%E6%89%AC%E5%B7%9E&ci=120&channelId=4').then(res => {console.log(res.data.hot)})
配置反向代理:
在项目文件夹下新建一个 vue.config.js 的文件,然后写上下面这段代码:
module.exports = defineConfig({// 配置反向代理devServer: {proxy: {'/api': {target: 'https://i.maoyan.com',changeOrigin: true}}}
})
注意: 写好配置代码以后,要重新运行项目,重启服务器;
整个配置反向代理的思路:
解决接口重复问题:
有时候会发现同一个接口的域名可能不一样,我们只需要拿指定域名的数据,比如说“/api”这个接口名字一样,但是这个接口前面的域名不一样,也就是两个不一样的地址,刚好就“api”这个名字重复了,如果还像上面那样配置的话,它就把所有“api”接口的地址前面全加上了一个域名。
devServer: {proxy: {'/yiyi': {target: 'https://i.maoyan.com',changeOrigin: true,pathRewrite: {'^/yiyi': ''}}}}
把“/api”改成“/yiyi”,然后加上一个pathRewrite属性,含义是路径重写,把自定义这个接口换成空,意思就是先按照“yiyi”这个名称去选出App.vue里“/yiyi”的接口,选出来后再把加的yiyi接口赋值为空,这样就可以避免和其他“api”接口的路径数据搞混了,最终拿到的数据接口还是: