最近使用Vue做一个音乐播放器小项目,在本地测试时发现调用Api控制台总会报错。
记录一下解决问题的过程。
1. 问题原因
跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器同源策略造成的,是浏览器对javascript施加的安全限制。
同源策略:是指协议、域名、端口都要相同,其中有一个不同都会造成跨域,在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。
比如这里我在本地测试使用的地址是http://localhost:8000
,而我使用的Api却是https
协议,就会造成跨域问题。
2. 解决跨域问题
2.1 配置baseURL
打开项目根目录下的main.js
,添加全局axios
和baseURL
1 | import axios from 'axios' |
2.2 配置vue.config.js
在项目根目录下新建vue.config.js
,添加如下代码
1 | module.exports = { |
2.3 调用Api
做完上两步后,重启一下项目。
打开需要调用Api的地方,将原本需要填的链接改写为/api/......
即可。
举个例子,需要调用的Api是https://www.baidu.com/haha
,那么在第二步的target
中填写https://www.baidu.com/
,第三步调用Api时填写/api/haha
就可以啦🙌
3. 配置多个跨域目标链接
2020/7/19更新
修改vue.config.js
配置文件,在proxy
中添加并列的api域名,这里需要注意的是,如果第一个简称是/api
了,那么后面添加的简称就不要在包含api
字样,否则会不起作用👊。