跨域照片資源管理权限(CORS enabled image)

日期:2020-12-14 类型:科技新闻 

关键词:免费自助建站,手机建站平台,wap建站,免费自助建站平台,H5网站,H5模板建站

HTML 标准文本文档为 images 引进了 crossorigin 特性, 根据设定适度的头信息内容 CORS , 能够从别的站点载入 img 照片, 并用在 canvas 中,就像从当今站点(current origin)立即免费下载的1样.

crossorigin 特性的应用细节, 请参照CORS settings attributes.

甚么是 “被污染的(tainted)” canvas?

虽然沒有CORS受权还可以在 canvas 中应用图象, 但这样做就会污染(taints)画布。 要是 canvas 被污染, 就不可以再从画布中提取数据信息, 也便是说不可以再启用 toBlob(), toDataURL() 和 getImageData() 等方式, 不然会抛出安全性不正确(security error).

这具体上是以便维护客户的本人信息内容,防止未经批准就从远程控制web站点载入客户的图象信息内容,导致隐私保护泄露。

(译者注: 假如客户登录过QQ等社交媒体网站, 倘若不做维护 ,则将会开启某个网站后,该网站运用 canvas 将客户的照片信息内容获得,提交,进而引起泄漏.)

示例: 从别的站点储存照片

最先, 照片服务器务必设定相应的 Access-Control-Allow-Origin 回应头。加上 img 元素的 crossOrigin 特性来恳求头。例如Apache服务器,能够复制HTML5 Boilerplate Apache server configs 中的配备信息内容, 来开展答复:

<IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
    <FilesMatch "\.(cur|gif|ico|jpe?g|png|svgz?|webp)$">
        SetEnvIf Origin ":" IS_CORS
        Header set Access-Control-Allow-Origin "*" env=IS_CORS
    </FilesMatch>
    </IfModule>
</IfModule> 

这些设定起效以后, 便可以像本站的資源1样, 储存别的站点的照片到 DOM储存 当中(或别的地区)。

var img = new Image,
    canvas = document.createElement("canvas"),
    ctx = canvas.getContext("2d"),
    src = "http://example.com/image"; // 实际的照片详细地址

img.crossOrigin = "Anonymous";

img.onload = function() {
    canvas.width = img.width;
    canvas.height = img.height;
    ctx.drawImage( img, 0, 0 );
    localStorage.setItem( "savedImageData", canvas.toDataURL("image/png") );
}
img.src = src;
//  保证缓存文件的照片也开启 load 恶性事件
if ( img.complete || img.complete === undefined ) {
    img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
    img.src = src;
}

访问器适配性

Desktop

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari Basic support 13 8 No support No support ?

Mobile

Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Basic support ? ? ? ? ?

另请参照

Chrome:在WebGL中应用跨域照片

HTML标准-crossorigin特性

以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。