vue调用百度api时跨域问题的解决方案

最近在开发一个基于百度图片文字识别的功能,本来在后端调用百度api的接口,功能已经完成了,但是由于后端服务器不能访问外网,所以将调用百度api的功能需要移到前端,于是就一个坑接一个坑,好不容易开发完成,部署到线上,有访问不到百度的api了。。。

百度api 的接口 https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials\&client_id=iBlglRY8dgOkyn6H\&client_secret=32uqmGIdHqkVRG\&

在开发过程中解决跨域的问题,相对简单一点,配置proxyTable 代理即可

在config目录下的index.js文件中添加如下配置即可

javascript 复制代码
module.exports = {
  dev: {
 
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: './',
    proxyTable: {
      '/baiduApi': {
        target: 'https://aip.baidubce.com', //访问地址
        changeOrigin: true,
        secure: false, //只有代理https 地址需要次选项
        pathRewrite: {
          '^/baiduApi': ''
        }
      }
 
    },

调用的时间

javascript 复制代码
  //获取百度图片识别的token
      this.axios.get('/baiduApi/oauth/2.0/token?grant_type=client_credentials&client_id=KXBwgOkyn6H&client_secret=32uqmGIdHqD7RcrBRkVRG&',{headers:{
        dataType:'json'
      }}).then(res =>{
        if(res.status ==200){
          this.access_token = res.data.access_token;
        }
      })

打包的时间proxyTable 将会失效,百度api的接口就有调不同了。。。

生产环境中可以使用nginx代理来解决跨域问题

在nginx的配置文件中添加如下的配置即可

javascript 复制代码
location ~ ^/(baiduApi)/.* {
        rewrite  ^.+baiduApi/?(.*)$ /$1 break;
         include  uwsgi_params;
        root   /usr/share/nginx/html;
        proxy_pass https://aip.baidubce.com;
        #  proxy_set_header Host $http_host;
 
 
    }

修改完配置,需要重启nginx服务器

相关推荐
DoraBigHead6 分钟前
React 中的代数效应:从概念到 Fiber 架构的落地
前端·javascript·react.js
LuckySusu7 分钟前
【vue篇】Vue 性能优化全景图:从编码到部署的优化策略
前端·vue.js
卓伊凡11 分钟前
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓
前端
笨笨鸟慢慢飞13 分钟前
Vue3后退不刷新,前进刷新
前端
LuckySusu16 分钟前
【vue篇】SSR 深度解析:服务端渲染的“利”与“弊”
前端·vue.js
LuckySusu16 分钟前
【vue篇】SPA 单页面应用:现代 Web 的革命与挑战
前端·vue.js
LuckySusu17 分钟前
【vue篇】Vue 初始化页面闪动(FOUC)问题终极解决方案
前端·vue.js
fruge19 分钟前
从 0 到 1 理解前端工程化:图表化解析核心逻辑
前端
LuckySusu19 分钟前
【vue篇】技术分析:Template 与 JSX 的本质区别与选型指南
前端·vue.js
BestStarLi24 分钟前
个人写码感悟:TailwindCSS不要忽视子选择器
前端