alist icon indicating copy to clipboard operation
alist copied to clipboard

[Draft] feat:async get raw_url,redirect add Referrer-Policy Header

Open naicfeng opened this issue 3 years ago • 2 comments

实验性讨论

raw_url 先给前台返回 /d(.*) 地址,然后异步获取真实的 raw_url 并缓存,当用户点击 下载 的时候直接返回缓存的地址

down redirect 添加一个 c.Header("Referrer-Policy", "no-referrer") 头,在阿里云这种验证 referrer 的情况下外链可以直接下载,因为302后浏览器会丢弃referrer去访问原始地址 测试:测试阿里云盘下载

并且这样阿里云盘的图片也可以外链啦


反面例子 借用一个第三方 alist 阿里云盘链接 测试: 目前版本阿里云盘下载 因为携带了 referrer 所以会返回 403


本套代码已经部署到 https://disk.fly.dev 可以测试一下效果

naicfeng avatar Oct 31 '22 04:10 naicfeng

我觉得只需要添加no-referrer header就好了,当用户点击 下载 的时候直接返回缓存的地址可以在前端得到/d(.*)的地址,不需要通过raw_url返回,因为raw_url的目的就是拿到真实地址以供预览,好像有些预览不能经过302?我不太记得了。

如果所有的预览通过302都没问题的话,那把raw_url改成/d(.*)也是没问题的,这样也不用提前异步获取raw_url,点击下载的时候也是会自动获取的。

xhofe avatar Oct 31 '22 07:10 xhofe

我觉得只需要添加no-referrer header就好了,当用户点击 下载 的时候直接返回缓存的地址可以在前端得到/d(.*)的地址,不需要通过raw_url返回,因为raw_url的目的就是拿到真实地址以供预览,好像有些预览不能经过302?我不太记得了。

如果所有的预览通过302都没问题的话,那把raw_url改成/d(.*)也是没问题的,这样也不用提前异步获取raw_url,点击下载的时候也是会自动获取的。

异步获取只是为了加快速度,像部署在国外的程序访问国内网盘,速度很捉急,当用户进入页面后,再点击 下载 按钮,后端可能已经缓存完成,没有缓存的话就降级为获取 没有改动前端,后端返回 raw_url/d(.*) 的原因是为了返回符合前端格式 目前只测试了 图片 视频 可以正常预览,并且没有改动图片 thumb 部分

naicfeng avatar Oct 31 '22 07:10 naicfeng

e75f19e 已经添加 Referrer-Policy ,没有更多人讨论此问题,我将关闭本pr

naicfeng avatar Nov 03 '22 07:11 naicfeng