如果图片服务器设置了“referer”请求头白名单,来控制防止盗链,那么可以尝试一下流程: 微信文档,明确指出“网络请求的 referer 格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid”(https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/development.html#%E5%85%B6%E4%BB%96%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9),而一般使用“referer”进行防盗链。 而我们的图片服务器设置的referer白名单为“https://servicewechat.com/wxcabcdefgh123456/*”,但是微信小程序iOS版,经过抓包分析,在【刚刚启动小程序】时,image标签加载网络图片的请求,请求头“referer”却是“https://servicewechat.com/preload/page-frame.html”,不符合referer白名单规则,所以被拒绝,服务器返回的是403状态码,但是微信小程序错误日志却是404 Not Found(又是一个坑)。 把我们的图片服务器,防盗链设置referer白名单为改为“https://servicewechat.com/*”则问题解决了,就是不要加“{appid}”这部分路径。 如果你的图片服务是,阿里云CDN+阿里云OSS,那么由于CDN的referer白名单只支持配置到域名(如:“servicewechat.com”),而阿里云OSS的referer白名单支持路径级配置(如:“https://servicewechat.com/wxcabcdefgh123456/*”),所以图片在CDN预热后,或者同一个CDN节点有人访问过,则小程序的图片请求会加载成功,否则会被OSS的防盗链拦截(返回HTTP 403); 所以,才会偶尔能加载,偶尔不能。
图片加载不出来- 当前 Bug 的表现(可附上截图) 图片显示不出来 - 预期表现 - 复现路径 - 提供一个最简复现 Demo [图片]
2020-07-14如果图片服务器设置了“referer”请求头白名单,来控制防止盗链,那么可以尝试一下流程: 微信文档,明确指出“网络请求的 referer 格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid”(https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/development.html#%E5%85%B6%E4%BB%96%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9),而一般使用“referer”进行防盗链。 而我们的图片服务器设置的referer白名单为“https://servicewechat.com/wxcabcdefgh123456/*”,但是微信小程序iOS版,经过抓包分析,在【刚刚启动小程序】时,image标签加载网络图片的请求,请求头“referer”却是“https://servicewechat.com/preload/page-frame.html”,不符合referer白名单规则,所以被拒绝,服务器返回的是403状态码,但是微信小程序错误日志却是404 Not Found(又是一个坑)。 把我们的图片服务器,防盗链设置referer白名单为改为“https://servicewechat.com/*”则问题解决了,就是不要加“{appid}”这部分路径。
图片加载失败是为什么呢?服务器请求图片已经成功,而且image的src以正确获得地址,但是在页面上不显示。但是换成本地地址就可以正常显示,请问是什么问题呢?谢谢!
2020-07-14