【Js】下载图片(解决跨域问题)

CodeNebula
• 阅读 5781
function downloadImage(imgsrc, name) {
    const image = new Image();
    // 解决跨域 Canvas 污染问题
    image.setAttribute('crossOrigin', 'anonymous');
    image.onload = function () {
        const canvas = document.createElement('canvas');
        canvas.width = image.width;
        canvas.height = image.height;
        const context = canvas.getContext('2d');
        context.drawImage(image, 0, 0, image.width, image.height);
        const url = canvas.toDataURL('image/png');
        const a = document.createElement('a');
        const event = new MouseEvent('click');
        a.download = name || 'photo';
        a.href = url;
        a.dispatchEvent(event);
    };
    image.src = imgsrc;
}

方法二:

function downloadImage(imgsrc, name) {
    const a = document.createElement('a');
    a.href = `${imgsrc}?response-content-type=application/octet-stream`;
    a.download = name || '';
    a.click();
    a.remove();
}

最稳妥的方案是后端给接口下载图片
我理解通过href和src下载是类似于jsonp的跨域解决方式,但这两种方法好像都有些情况仍然是跨域的。。。

点赞
收藏
评论区
推荐文章
待兔 待兔
3年前
什么是跨域以及如何解决?通俗易懂带你彻底搞定
什么是跨域以及如何解决?通俗易懂带你彻底搞定现在的web项目,很多都是前后端分离,特别容易出现跨域问题那么什么是跨域问题呢?本篇文章带你彻底从本质上弄明白什么是跨域问题以及如何解决一跨域有什么现象?我们先看一下
昔不亏 昔不亏
2年前
「解决 — vue调用百度ai人脸识别接口跨域报错」
之前调都没毛病的,这次咋就开始报跨域了捏问题:跨域解决:配置proxy代理1:修改vue.config.js文件2:修改baseURL3:修改前后对比注:ProxyTable会在打包后失效,可以使用反向代理工具,例如nginx,或者让后端解决
Wesley13 Wesley13
4年前
Nginx解决跨域问题(CORS)
前言CORS(CrossOriginResourceSharing)跨域资源共享,是一种允许当前域(domain)的资源(比如html/js/webservice)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(thesameoriginsecuritypolicy)浏览器会禁止这种跨域请求。 如:a.c
Stella981 Stella981
4年前
No 'Access
跨域说明前后端分离下,跨域已是一个老生常谈的话题,但很多小伙伴还是经常面临这样的问题,且解决方案多变多样。这里介绍一种简单直接的后端解决方案。解决跨域(服务端)/CorsConfig跨域@authorylyue@since2018年11
Easter79 Easter79
4年前
SpringBoot解决跨域问题
在开发前后端分离的项目时,常常会碰到跨域请求的问题。这是因为浏览器的安全性限制,不允许Ajax访问协议不同、域名不同、端口号不同的数据接口,否则会出报No'AccessControlAllowOrigin'headerispresentontherequestedresource错误。SpringBoot通过设置cors(跨源
Stella981 Stella981
4年前
SpringBoot解决跨域问题
在开发前后端分离的项目时,常常会碰到跨域请求的问题。这是因为浏览器的安全性限制,不允许Ajax访问协议不同、域名不同、端口号不同的数据接口,否则会出报No'AccessControlAllowOrigin'headerispresentontherequestedresource错误。SpringBoot通过设置cors(跨源
Easter79 Easter79
4年前
SpringBoot解决跨域的问题
最近用Axios做get请求时发现前台报XMLHttpRequestcannotloadhttp://127.0.0.1:8080/sayHello.No'AccessControlAllowOrigin'headerispresentontherequestedresource.Origin'http://127.0.
Stella981 Stella981
4年前
SpringBoot解决跨域的问题
最近用Axios做get请求时发现前台报XMLHttpRequestcannotloadhttp://127.0.0.1:8080/sayHello.No'AccessControlAllowOrigin'headerispresentontherequestedresource.Origin'http://127.0.
Stella981 Stella981
4年前
Ajax跨域问题和解决
一般,在本地通过ajax访问其他服务器上的文件,会出现如下提示!(https://static.oschina.net/uploads/img/202006/07203858_Q9wh.png)AccesstoXMLHttpRequestat'http://courage.cqscrb.top/partTime/menu/getAllM
深入跨域 - 解决方案
1前言前文《深入跨域从初识到入门》中,大家已经对同源与跨域的产生历史与重要性等有了一个初步的了解了,那么我们应该如何解决在日常开发中遇到的跨域引起的问题呢?2一览图我们将日常开发中的跨域解决方案大体分为两类:iframe跨域与API跨域:3iframe跨域
CodeNebula
CodeNebula
Lv1
热爱是不会降温的。
文章
3
粉丝
0
获赞
0