在跟着视频做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解决方法
程序喵