如何解决JavaScript 无法以编程方式下载图像获取 403
在我的网站上,我有一个按钮,每当用户点击它时,他都会随机下载一张图片,这是下载图片的代码:
const downloadImg = (src) => {
const imgName = src.replace(/^.*[\\\/]/,'');
var a = document.createElement('a');
a.href = src;
a.download = imgName;
a.click();
};
这对于来自开放网站(如 google.com 或 Wikipedia commons)的图片完全没问题
但是,对于来自诸如Pixabay、Pexels、Freepik 等网站的图片,它不会下载图片,而是在同一选项卡中打开图片网址,并在控制台中显示 403 禁止错误
我完全明白为什么会发生这个错误,但我不明白如何修复它?如果我在图像上 right-clicked
然后点击 save image as
不会出现错误并且我将能够正常下载图像,我如何以编程方式使用 javascript 执行此操作?
解决方法
它使用此处接受的答案中的方法工作:Chrome 65 blocks cross-origin <a download>. Client-side workaround to force download?,稍作改动。而不是使用模式“cors”使用“no-cors”。直接从 url 下载时,显然某些域存在 cors 错误。
更新:如果服务器不允许跨域请求,则不起作用。使用“no-cors”发出请求将成功,但响应正文将不可用。所以这不是一个解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。