[Draft] feat:async get raw_url,redirect add Referrer-Policy Header
实验性讨论
raw_url 先给前台返回 /d(.*) 地址,然后异步获取真实的 raw_url 并缓存,当用户点击 下载 的时候直接返回缓存的地址
down redirect 添加一个 c.Header("Referrer-Policy", "no-referrer") 头,在阿里云这种验证 referrer 的情况下外链可以直接下载,因为302后浏览器会丢弃referrer去访问原始地址
测试:测试阿里云盘下载
并且这样阿里云盘的图片也可以外链啦
反面例子
借用一个第三方 alist 阿里云盘链接
测试: 目前版本阿里云盘下载
因为携带了 referrer 所以会返回 403
本套代码已经部署到 https://disk.fly.dev 可以测试一下效果
我觉得只需要添加no-referrer header就好了,当用户点击 下载 的时候直接返回缓存的地址可以在前端得到/d(.*)的地址,不需要通过raw_url返回,因为raw_url的目的就是拿到真实地址以供预览,好像有些预览不能经过302?我不太记得了。
如果所有的预览通过302都没问题的话,那把raw_url改成/d(.*)也是没问题的,这样也不用提前异步获取raw_url,点击下载的时候也是会自动获取的。
我觉得只需要添加no-referrer header就好了,
当用户点击 下载 的时候直接返回缓存的地址可以在前端得到/d(.*)的地址,不需要通过raw_url返回,因为raw_url的目的就是拿到真实地址以供预览,好像有些预览不能经过302?我不太记得了。如果所有的预览通过302都没问题的话,那把raw_url改成
/d(.*)也是没问题的,这样也不用提前异步获取raw_url,点击下载的时候也是会自动获取的。
异步获取只是为了加快速度,像部署在国外的程序访问国内网盘,速度很捉急,当用户进入页面后,再点击 下载 按钮,后端可能已经缓存完成,没有缓存的话就降级为获取
没有改动前端,后端返回 raw_url 为 /d(.*) 的原因是为了返回符合前端格式
目前只测试了 图片 视频 可以正常预览,并且没有改动图片 thumb 部分
e75f19e 已经添加 Referrer-Policy ,没有更多人讨论此问题,我将关闭本pr