今天在开发一个项目中发现vue前端调用百度ocr识别接口出现了跨域问题!

百度api 的接口: https://aip.baidubce.com/oauth/2.0/token

和百度开发工程师沟通一个多小时,未找到解决方案,忽然想到了是不是nginx配置的问题,调整一下nginx的配置文件。有的时候没有思路解决问题,也就多个方向试试,没回会有另一片天地!没准就能解决问题了!

接下来我们看看如何解决

我们用ngxin配置,过多的具体含义我们就不赘述了,这里只讲解对这个问题解决的具体配置信息。具体如下:

```
    server {
                listen          80;
                server_name www.test.com; # 这里使我们访问的域名或者域名对应的ip地址
        location / {    
            root /tools/sdk/dist;  # 我们的vue页面打包后的dist所在文件路径地址
                        index index.html;  # 这里使我们vue默认访问的首页面
                        try_files $uri $uri/ /index.html;
        }
        location ~ ^/(baidu)/.* {  # 此处配置的baidu是我们vue项目中代理的变量,我们这里配置他的跳转路径
            rewrite  ^.+baidu/?(.*)$ /$1 break;
            include  uwsgi_params;
            proxy_pass https://aip.baidubce.com; # 代理具体的访问接口信息地址
 
        }
        }
```

![](<> "点击并拖拽以移动")


![1659584379951.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e3cdda456b2b43ff97b11461b54ae562~tplv-k3u1fbpfcp-watermark.image?)

图中红框中圈出的地方,代码中注释部分,所说的vue代理,baidu就是指的我们标注的这个/baidu,他要和我们nginx中的配置保持一致就ok了!

这样就可以完美解决跨域问题了

上方nginx代码中,我们每行都有详细的注释。有助于我们理解具体的代码是什么含义!

今天又学到了一个新的知识点,以前从来没有遇到过这么解决跨域的问题。就是用我们nginx来解决跨域,有时候跨域不一定是要服务端硬编码来实现跨域的解决方案!感谢我们前端的同学帮助解决!

更多编程内容,请扫码关注《coder练习生》,如果觉得有用,也可赠送作者一杯咖啡

Logo

前往低代码交流专区

更多推荐