最近发现在微信小程序中访问百度网盘生成的dlink链接下载文件时,虽然文件的dlink是“https://d.pcs.baidu.com/”开头的,但是百度网盘好像有二级域名,比如“https://ccte-001.com”类似这种的,需要配置二级域名到微信小程序的安全域名中才能正常下载。问题是,百度的二级域名有很多,而且不确定是否会随时变动,而微信小程序安全域名最多只能配置200个域名。有没有解决办法?
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
针对您在微信小程序中访问百度网盘dlink下载文件时遇到的二级域名问题,由于百度网盘可能使用的二级域名数量较多且不固定,而微信小程序的安全域名配置有限制,确实存在一定的挑战。目前微信小程序没有直接提供动态添加或通配符匹配安全域名的功能。
不过,您可以考虑以下几种解决方案:
-
与百度合作: 联系百度开放平台寻求官方支持,看是否能提供一个稳定的、受微信小程序认可的域名或者API接口来获取文件资源,从而避免频繁变动的安全域名问题。
-
代理服务器: 通过搭建自己的服务器作为中间件,将所有百度网盘的下载请求转发到您的服务器,然后由您的服务器去获取并返回给小程序用户。这样只需要在小程序安全域名中配置您的服务器域名即可。但这种方法需要额外的技术维护和带宽成本。
示例代码(仅作原理展示,并非完整实现):
// 假设你的代理服务器地址是 https://your-proxy-server.com/download // 在微信小程序中发起网络请求时,指向你的服务器 wx.request({ url: 'https://your-proxy-server.com/download', method: 'POST', data: { baiduDlink: 'https://ccte-001.com/...原始dlink路径...', fileId: 'file_id' // 百度网盘文件ID等其他必要参数 }, success(res) { // 在服务器端处理完后,这里的res.data应当是实际文件内容 handleDownloadedFile(res.data); } }); // 你的服务器接收到请求后,转发到百度网盘并返回数据 // 这部分逻辑需要在你的服务器端实现 app.post('/download', async (req, res) => { const { baiduDlink, fileId } = req.body; try { const fileContent = await fetchFromBaidu(baiduDlink); // 模拟从百度网盘获取文件内容 res.send(fileContent); } catch (error) { // 错误处理 } });
-
CDN服务: 如果百度网盘文件有对应的CDN链接,可以尝试使用CDN域名,通常CDN域名相对稳定且较少,可以在微信小程序安全域名列表中添加。
-
监控和定期更新: 对百度网盘的二级域名进行持续监控,一旦发现新的常用二级域名,就及时更新到微信小程序的安全域名列表中。
综上所述,虽然以上方案均存在一定的局限性或额外工作量,但在当前微信小程序的限制下,这可能是最接近解决此问题的办法了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报-
悬赏问题
- ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
- ¥15 matlab自定义损失函数
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图