小程序实现天气预报时请求出现问题

img


在做天气预报时候出现这个问题,


// 引用百度地图微信小程序JSAPI模块 
var bmap = require('/libs/bmap-wx.min.js');
 
Page({
  data: {
    ak: "ZgnvjtASqR2m5YVdtVYAEmAYnKgDWywV",
    weatherData: '',
    futureWeather: []
  },
  onLoad: function (options) {
    var that = this;
    // 新建bmap对象 
    var BMap = new bmap.BMapWX({
      ak: that.data.ak
    });
    var fail = function (data) {
      console.log(data);
    };
    var success = function (data) {
      console.log(data);
 
      var weatherData = data.currentWeather[0];
      var futureWeather = data.originalData.results[0].weather_data;
      console.log(futureWeather);
      weatherData = '城市:' + weatherData.currentCity +  '\n' + '日期:' + weatherData.date + '\n' + '温度:' + weatherData.temperature + '\n' + '天气:' + weatherData.weatherDesc + '\n' + '风力:' + weatherData.wind + '\n';
      that.setData({
        weatherData: weatherData,
        futureWeather: futureWeather
      });
    }
 
    // 发起weather请求 
    BMap.weather({
      fail: fail,
      success: success
    });
  }
 
})

情况1:未设置合法域名

解决方法:请在微信公众平台登录小程序后台设置。
情况2:设置了合法域名,开发工具仍然报错

img


解决方法:
在右上角点击详情,之后刷新一下项目配置,看看有无域名信息,如果有了,清除全部缓存重新编译小程序,如果还是没有请确认是否设置合法域名。
在这里插入图片描述
情况3:设置了合法域名,开发工具不报,真机调试和体验版报
这种情况一般开发工具正常运行,真机调试和体验版不行,因为之前使用过真机调试和发布体验版,在测试机上留下缓存

解决方法:手机微信下拉找到最近使用的小程序,长按之后拖到底部删除,然后重新尝试真机调试和体验版。
情况4:设置了合法域名,到哪都报错,清缓存也没用!

解决方法:请确认访问该域名时,是否会出现重定向,将重定向域名添加进合法域名
情况5:设置了合法域名(含重定向),到哪都报错,清缓存也没用!

解决方法:请确认访问该域名是否是三级域名,请设置为一级或二级域名
情况6:以上所有解决方案都不行!
解决方法:请在微信小程序平台反馈bug

没有配置 DNS 安全域名请求引起的,请登录 「小程序后台 - 开发 - 开发设置 - 服务器域名」 中进行配置,配置时需要注意:

  • 预解析域名无需填写协议头
  • 预解析域名最多可添加 5 个
  • 其他安全策略同服务器域名配置策略

配置流程 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html

请求的域名需要按下图的要求进行配置,但是baidu的域名不是你的,所以你需要自己用后端中转下,你这样不中转也有安全隐患,别人会盗用你的key
数据流应该是
小程序=>你自己的域名后端=>baidu地图的接口

img

参考GPT和自己的思路,根据错误信息,您需要在小程序开发者工具中设置请求域名白名单,将“https://api.map.baidu.xn--com-9o0a802z05e8el8av6gpb708e0m7ddedhs2k./

请按照以下步骤操作:

1.打开小程序开发者工具,进入开发者工具的“详情”页面。

2.点击左侧菜单栏中的“本地设置”。

3.在“请求域名”一栏中添加“https://api.map.baidu.xn--com-9o0a./

4.保存设置,重新编译并运行小程序。

此时应该可以正常请求到百度地图的API了。如果还有其他问题,请随时向我提问。