我使用了七牛云存储空间,作为我的图床,并开启了防盗链设置;由于我想在GitHub和Gitee上显示我的图床的图片,为此我加了白名单gitee.com和github.com,在Gitee上能正常显示,但是在GitHub不行;
我上传了另一个图床的图片(没开启防盗链),然后能显示出来图片,我看了下图片的地址是https://camo.githubuserconten... 开头的,因此我在七牛云也加了camo.githubusercontent.com这个白名单,然而修改成功后,还是没能在GitHub显示出来图片;
而Gitee里,打开图片的地址是我的图床的地址,因此可以看得到图片;
GitHub项目地址:https://github.com/Peter-JXL/...
Gitee项目地址:https://gitee.com/peterjxl/Ti...
我现在认为是GitHub会将图片放到其他地方(例如其他域名),而我又没将其放到白名单,导致访问失败,请问有大佬知道要怎么解决吗?
--以下是2023-2-21更新
经评论区老哥唯一丶 提醒,怀疑是空refer的原因,
因日志生成有延迟,我刚拿到七牛云的CDN日志分析了下,好像确实是空refer导致的原因……Gitee和GitHub的日志对比:
116.21.31.192 MISS 104 [20/Feb/2023:21:51:50 +0800] "GET https://image.peterjxl.com/TimeRecorder/TimeRecorder-summary.jpg HTTP/2.0" 200 43824 "https://gitee.com/peterjxl/TimeRecorder" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
140.82.115.62 MISS 1 [20/Feb/2023:21:04:54 +0800] "GET https://image.peterjxl.com/TimeRecorder/TimeRecorder-label.jpg HTTP/1.1" 403 351 "-" "github-camo (325d2008)"
看了一下,应该是 Github 为了避免在自家页面载入不可信的资源,将外链图片进行了转换。
这个转换,有可能是 GitHub 直接通过后端转发到你的 OSS 服务器去的(反向代理),每次都都这样去获取。
也可能是 GitHub 通过后端访问你的 OSS 地址,把图片下载到了 GitHub 的服务器进行缓存。
这俩种情况,都是因为 GitHub 是通过后台类似于 CURL 的形式去访问你 OSS 上的图片,所以这里可能不一定携带了
referer
所以你那边放行是没有用的。Github 建议你把图片可以直接上传到仓库中,然后使用相对路径的方式去引用,这样更加合适。
如果你一定要那样做,你可以看一下 OSS 的日志,如果没有提供的话,你可能要自己写一个小的脚本来进行测试。