公司使用百度云存储一些资源,然后现在要做防盗链,在CDN加入Referer白名单后发现PC是正常的,微信小程序无法正常访问资源了。然后是各种查啊,然后发现是微信小程序不支持Referer的修改,且在小程序开发工具是Referer是固定https://servicewechat.com/{你的appid}/devtools/page-frame.htm格式的
但是坑的是,真机调试不行.,使用自己程序接收到referer是null,本想着设置允许空referer,但是公司要求不能直接哪URL在浏览器就能打开,于是设置了不允许空,小程序就无法访问做了防盗链的资源了。完了没办法搞不了就停了1周,干其他更重要的事情去了。
后面第二周手上紧急的搞完了,又被领导催要搞这个微信小程序防盗链问题。
于是开始又各种查找资料,提交百度工单。他们推介说用EdgeJS功能
行吧。开通服务(服务暂时是免费的,后续会收费?),看文档,测试开搞
最后最后终于是搞定了。😄😄😄 贴上脚本代码截图,替换成你自己的refers就能用,被那个r.headersIn['referer']卡了好久,最后想办法打印出来发现TM如果referer不传值居然是undefined
后续更新 2023年8月3日
坑啊。今天过来发现还是不行,之前是CDN缓存问题?然后真机调试,想办法把User-Agent输出了,TND不愧是腾讯,小程序User-Agent直接是com.tencent.mm
因此判断User-Agent改下
if(ua!==null &&(ua.toLowerCase().indexOf('micromessenger') != -1 ||
ua.toLowerCase().indexOf('com.tencent.mm') != -1 )){
f=true;
}
这样就OK了,搞定上线正式环境