最近一个vue项目用到百度图片识别api,涉及到跨域问题,找了一个nginx的解决方案。html
配置以下:vue
server { listen 80; server_name localhost; location / { root C:\git\youseniu\ops\dist; index index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location /baiduapi { rewrite ; proxy_pass https://aip.baidubce.com; } }
- 由配置信息可知,咱们让nginx监听localhost的80端口,网站A与网站B的访问都是通过localhost的80端口进行访问。
- 咱们特殊配置了一个“/baiduapi”目录的访问,而且对url执行了重写,最后使以“/baiduapi”开头的地址都转到“https://aip.baidubce.com”进行处理。
- rewrite ^/baiduapi(.)$ /$1 break; 表明重写拦截进来的请求,而且只能对域名后边以“/baiduapi”开头的起做用,例如http://localhost/baiduapi/rest/2.0/ocr/v1/business_license?access_token=24.72ebec102414,rewriter到https://aip.baidubce.com/rest/2.0/ocr/v1/business_license?access_token=24.72ebec102414。只对/apis重写。rewrite后面的参数是一个简单的正则 ^/baiduapi(.)$ ,$1表明正则中的第一个(),$2表明第二个()的值,以此类推。break表明匹配一个以后中止匹配。