微信小程序请求豆瓣API报403解决方法

在跟着视频做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/*; 所以不需要再配置

最终结构如下。

WX20180403-121041@2x.png


OK,配置完成,在小程序中使用我们自己的域名即可。

访问:https://douban.uieee.com/v2/movie/in_theaters?count=3

参考地址:

未经允许请勿转载:程序喵 » 微信小程序请求豆瓣API报403解决方法

点  赞 (4) 打  赏
分享到: