用axios 请求第三方接口会报跨域,但是用原生的ajax却是可以正常访问的
报错图片
当时考虑是跨域问题,用到了proxyTable,是可以的,但是在生产环境却又出现了问题,找nginx配置相关 proxy_pass
这里是个大坑,我的配置是
// ‘/api’:{
// target: ‘http://127.0.0.1:8997’,
// changeOrigin:true,
// },
奈何这样配置的意思是转发到该服务器的8997端口,而不是我安装的第三方应用内的接口,思来想去,还是得直接调用http://127.0.0.1:8997,这个接口,报错跨域,忽然如有神助,想着是用axios不行,用原生的ajax行不行,试完惊呆了,竟然可以调通,原来是自己考虑多了,这时从网上搜素为什么axios请求三方API跨域,用原生的ajax正常
网上朋友有人说可能是axios设置了全局的axios.defaults.withCredentials = true,//表示跨域请求时是否需要使用凭证
污染了整个axios环境,需要将axios私有化
const service = axios.create({
baseURL: base url + request url
withCredentials: true,
timeout: 5000 // request timeout
})
这样一来,不会污染整个axios,瞬间豁然开朗了起来

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐