由于某个网站的文件有referer防盗链设置,所以我想在下载时修改referer信息。
普通的下载代码:
chrome.downloads.download({
url: url,
filename: fileName,
conflictAction: 'uniquify',
saveAs: false
});
我尝试了chrome.webRequest.onBeforeSendHeaders.addListener() 来修改web请求的referer,但是这个方法似乎不会对 chrome.downloads.download 生效。
而 chrome.downloads.download 自身似乎又不允许修改referer。那么还有没有办法达到我的目的呢?
(因为我是新手,所以用了很多“似乎”,请见谅)
ps:我找到了stackoverflow上的一个讨论:
send referrer header with chrome.downloads api
答主说是在新标签页打开图像然后将图像加载到canvas里。
其实我感觉stackoverflow上的这个办法有情景限制,因为图片是存在referer限制的,而那个题主的问题是在图片上点击下载,此时图片已经在网页上加载了,所以可以在新标签页打开。但我的使用情景里不会把所有图片都在网页上加载,而是根据url直接下载,所以我应该也不能在新标签页里打开图片,也就没办法继续操作了。
如果非要这么做,那么我先把图片在源网页里加载一遍,然后再顺着这个答主的思路进行操作,也许会有一定的可能性顺利执行。只是这样更加繁琐了,我做这个扩展的意义也就不存在了 TAT
隔了快10个月,我又开始研究这个问题,发现 chrome 是可以修改 referer的,不过不是在 download 里面设置。
类似这样:
此外,需要在清单文件里加入权限:
详见:
https://saber.love/?p=4410