赞
踩
在使用axios请求了接口后,发现并没有请求到,F12里面出现如下图所示的报错

这是提示跨域了。所有使用JavaScript的浏览器都会支持同源策略。同源策略即指域名/协议/端口号相同。只要有一个不同,就会当作跨域请求。
解决方法为:
header('Access-Control-Allow-Origin:*');//允许所有来源访问
header('Access-Control-Allow-Method:POST,GET');//允许访问的方式
当然求人不如求己,自己在项目里面设置代理
config文件夹下的index.js文件。dev下的proxyTable {}举个例子,如果请求接口为http://www.baidu.com/user/info/list,请求头为http://www.baidu.com/,那么就添加
"/user": {
target: "http://www.baidu.com/",
changeOrigin: true,
}
然后找到请求页面,在axios的请求接口里面只写/user/info/list就行了。
更新: 另外一种配置方法:
同样是更改config/index.js的配置文件:
module.exports = {
dev: {
proxyTable: {
'/api/: {
target: 'http://www.baidu.com/',
changeOrigin: true,
pathRewrire: {
'^/api': ''
}
}
}
}
上面的配置表示,遇到接口路径有api的,就换成http://www.baidu.com/这个请求头,同时把api去掉。
因为跨域问题一般只存在开发环境,所以我们可以把axios进行如下配置:
if(process.env.NODE_ENV === 'production') {
axios.defaults.baseURL = '/'
} else {
axios.defaults.baseURL = '/api/'
}
这样,我们在开发环境下,就可以通过增加api这个来配置跨域。
在项目根目录下新建vue.config.js文件,在该文件内新增如下配置:
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'https://baidu.com',
ws: true,
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
}
}
},
}
剩下的axios配置跟上面一样,更多关于vue.config.js的配置文件请参考官方文档
以上就设置完成了,当然最后一步千万不要忘了:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。