文章目录

  • 1、问题描述
  • 2、问题解决
  • 3、结语

1、问题描述

  在我已经在小程序管理后台设置好request合法域名的前提下:

  微信小程序小程序后端使用wx.request访问阿里云公共资源返回403的情况,目标链接我就以字符串形式展示:https://geo.datav.aliyun.com/areas_v3/bound/geojson?code=320000_full 或者 https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json。本页面数据来源于高德开放平台,我从阿里云可视化平台获取。
  为了直接从网络获取大量的geoJson文件(json格式文件的一种),如下图所示:

  但是,我本以为几分钟能解决的事情,却让我查阅了这么多资料,困惑了整整一天。我写的代码和遇到的错误如下:

  我查阅了很多资料为什么会碰到403报错,也尝试修改了headers的content-type等,但说实话,修改header是无效的。第一天晚上一点,我关掉电脑,用手机查看一下原因。一般情况下,碰到一些头铁的问题,临睡觉之前我都会尝试用手机浏览器或者微信公众号查找问题。我在阿里云官网看到了一个让我很振奋的链接:配置Referer防盗链:

  里面提到的Referer黑名单让我重燃希望,我马上开电脑在header中设置了Referer,也就是模拟是浏览器发出的请求。但是没有用,还是403。但我没有灰心。原因很简单,小程序网络请求的Referer是不能更改的,是默认的:https://servicewechat.com/{appid}/{version}/page-frame.html
  我在全网搜索解决方法的过程中,还找到了一个新的思路,就是设置代理服务器,我猜测是阿里云拒绝了小程序域名的访问,那么就找个中介代理转发就好了。不是不可行,但是成本有点高,所以我先搁置并寻找其他解决方法。
  次日,我在小程序开发社区遇到了和我一样碰到这种情况的老哥,他访问的链接和我一样,但是仍然没有解决问题。但是,底下的评论却勾起了我的注意,有个回答者说,这应该不是小程序端的问题,你可以去问阿里云客服。然后我就真的注册了阿里云,问了阿里云客服。
  虽然客服没有及时回复,但是却让我在阿里云官网找到了解决问题的灵感。

  三天后得到回复,但这时我已经解决了问题。而且这个问题我在文章开头已经提到了,我们的前提是已经在小程序管理后台设置好了合法域名(白名单),所以客服的回答没有帮助。不过还是感谢。

2、问题解决

  我在阿里云官网搜索小程序云,居然找到了这么详细的文档:

  我一下子就明白了,如果真的涉及到跨域,为什么我不用小程序云函数呢?因为一些内置的API,应该都是封装好的,我并不需要手动处理。在阿里云能搜索到小程序云,说明两者应该是互通的。因为项目本身就是云开发,我马上去写了一个云函数并上传部署,在index.js中:

// 云函数入口文件
const cloud = require('wx-server-sdk')
var rp = require('request-promise');
cloud.init()// 云函数入口函数
exports.main = async (event, context) => {let url = "https://geo.datav.aliyun.com/areas_v3/bound/"+event.adcode+"_full.json"return await rp(url).then(function (res){return res}).catch(function(err){return err})
}

  然后在后端,我这样实现加载云函数:

    wx.cloud.callFunction({// 云函数名称name: 'reqGeoJson',data:{adcode:options.adcode},// 传给云函数的参数success: function(res) {geoJson = res.resultgeoJson = JSON.parse(geoJson)// console.log(geoJson)},fail: function(res) {console.log(res);  }})

  这一刻,我明白了,我已经赢了太多。当console.log(geoJson)成功打印出了geoJson的那一刻,此时此刻,恰如彼时彼刻。这一刻我值得所有(doge)。这一打,让我打出了整个盛夏。

3、结语

  学习中最让人成长的是独自查找问题的过程,而不是解决问题本身。这是我的感悟。这一个问题是我在全网的独家解析,转载请和博主联系。对你有帮助的话,请点赞收藏加关注。你的支持是我创作的最大动力。有错误的地方也请指正,非常感谢。

小程序wx.request访问阿里云公共资源返回403的独家解决方法相关推荐

  1. 阿里云上传图片返回403其中一种解决办法

    阿里云上传图片返回403 最近发现项目上传图片到阿里云失败,返回403,排查了一圈发现是计算机时间和实际时间误差过大造成的, 上传图片时会在authorization生成带有计算机时间的编码字符串,如 ...

  2. 无法访问阿里云ECS实例运行网站的解决方法

    情况 买的是阿里云ECS云服务器,按照万无一失的Nginx安装方法安装成功之后,浏览器上访问IP地址,看不到该看到的Wecome to nginx !页面. 系统环境:Centos7.4 前期尝试解决 ...

  3. 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

  4. 微信小程序服务器开小差了,微信小程序wx.request请求封装

    微信小程序 wx.request RequestTask wx.request(Object object)发起 HTTPS 网络请求. 示例代码 wx.request({ url: 'test.ph ...

  5. 微信小程序 wx.request 的封装

    自学转行到前端也已近两年,也算是简书和掘金的忠实粉丝,但是以前一直惜字如金(实在是胆子小,水平又低),现在我决定视金钱如粪土(就只是脸皮厚了,水平就那样),好了废话不多说,切入主题,最近自己尝试了一下 ...

  6. 解决微信小程序 wx.request 方法不支持 Promise 并发数问题

    wx-promise-request 是微信小程序 wx.request 方法的不支持 Promise 和并发数问题的解决方案.如果只需要解决并发数问题,可以使用wx-queue-request.js ...

  7. 微信小程序wx.request接口

    微信小程序wx.request接口 wx.request是小程序客户端与服务器端交互的接口 HTTPS 请求 一个微信小程序,只能同时(同时不能大于5个)有5个网络请求 wx.request(OBJE ...

  8. 微信小程序数据库交互 php,微信小程序wx.request实现后台数据交互功能分析

    本文主要介绍微信小程序wx.request实现后台数据交互功能,分析微信小程序wx.request在后台数据交互过程中遇到的问题与相关的解决方法,需要的朋友可以参考下 记录微信小程序wx.reques ...

  9. 阿里云漏洞验证需要付费的解决方法

    阿里云服务器提示漏洞,修复需要付费,验证需要付费,是因为阿里云帮你解决漏洞,收费也是应该的.咱们今天说的是免费解决方法. 新用户会给个七天的免费修复验证,七天后就不能试用 咱们现在说非七天试用. 1. ...

最新文章

  1. Activity从创建到显示的整个过程
  2. 分布式消息队列 — RabbitMQ(3)
  3. Python中的进程间通信
  4. android文件读写
  5. 为什么大家更愿意使用MyBatis,读完源码我知道了…
  6. 如何用servle和c3p0-DBUtils实现用户登录功能
  7. 一文搞定数据结构(图解)
  8. Android SwipeRefreshLayout 实现下拉刷新1
  9. Python爬虫入门教程 42-100 爬取儿歌多多APP数据-手机APP爬虫部分
  10. GreenOpenPaint简介
  11. C++语言编程软件推荐及下载教程
  12. 【8015】对做产品有帮助的行外书
  13. 录制电脑游戏视频的方法
  14. 数字经济与数字化转型
  15. 启动Tomcat时常见的报错
  16. java毕业设计二手交易网站Mybatis+系统+数据库+调试部署
  17. 51nod3174 堆积木
  18. Maven虐我千百遍,我待Maven如初恋!
  19. sap服务器数据库配置文件,怎么查看项目数据库的配置文件
  20. RedHat Enterprise linux 4-6 下载连接汇总

热门文章

  1. 【转载】__declspec(dllimport) __declspec(dllexport)
  2. 1111112222
  3. collector是什么意思中文翻译_collector是什么意思_collector怎么读_collector翻译_用法_发音_词组_同反义词_收藏家_采集者-新东方在线英语词典...
  4. CentOs7 提示没有安装包docker的解决办法
  5. 汉诺塔的递归逐步详解
  6. Java输入一个数,判断该数是否为质数
  7. 史上最难的初等几何问题?
  8. 信号量相关问题典型案例
  9. Office Visio 2016安装
  10. Hyperledger fabric high-throughput(高吞吐量链码示例)部署