今天在开发一个项目中发现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练习生》,如果觉得有用,也可赠送作者一杯咖啡