在跟着视频做Demo的时候,发现视频中正常,自己测试接口时会发生403的错误,于是搜索了下发现这是大家都会遇到的问题,那么这篇文章就简要的介绍一下如何使用Nginx反向代理方式请求接口。
如果你不知道Nginx是什么,如何安装,那么请参考下面两篇文章学习
解决方案
经过排查和摸索,豆瓣应该是根据 HTTP Referer 判断是否为小程序内发起的请求,所以我们通过反向代理的方式修改源请求中的 Referer 解决。
开始配置(mac)
我这里主要使用到了GitHub上人提供的代理配置:https://github.com/zce/douban-api-proxy
1、进入/usr/local/etc/nginx
目录,创建log,certs目录
2、将github中的证书copy到certs目录
3、配置本地hosts文件(我的在本地测试,如果需要发布正式环境,请更换备案域名和证书文件)
// etc/hosts文件 127.0.0.1 douban.uieee.com
4、在servers目录中,新建douban.com.conf配置文件,文件内容如下
# 豆瓣接口代理 server { listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; server_name douban.uieee.com; access_log /usr/local/etc/nginx/logs/douban.uieee.com-access.log; error_log /usr/local/etc/nginx/logs/douban.uieee.com-error.log; ssl on; ssl_certificate /usr/local/etc/nginx/certs/douban-api-proxy/douban.uieee.com.pem; ssl_certificate_key /usr/local/etc/nginx/certs/douban-api-proxy/douban.uieee.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass https://api.douban.com; proxy_redirect off; proxy_set_header Referer "https://www.douban.com"; } }
5、默认的nginx.conf
文件最下面有一行include servers/*;
所以不需要再配置
最终结构如下。
OK,配置完成,在小程序中使用我们自己的域名即可。
访问:https://douban.uieee.com/v2/movie/in_theaters?count=3
参考地址:
未经允许请勿转载:程序喵 » 微信小程序请求豆瓣API报403解决方法