难以理解如何避免JavaScript中的跨源污染

时间:2014-07-16 02:09:52

标签: javascript image canvas

我在以下代码中遇到了跨源污染的错误,我无法弄清楚原因。当您尝试从外部服务器提取图像时,我认为发生了跨源污染,但图像来自本地目录。

var image = new Image();
$(image).on("load", function() {
    ctx.drawImage(image, 0, 0, 1080/scale, 1920/scale);

    /*Error occurs here */
    var imageData = ctx.getImageData(0, 0,
        this.width / scale,
        this.height / scale);
    var pixels = imageData.data;

    ...
});
image.src = "test2.jpg"; 

1 个答案:

答案 0 :(得分:1)

声明本地文件系统是跨源的并且会污染画布。鉴于您的最敏感信息可能位于本地文件系统上,这是一个很好的声明。

以下是符合CORS安全性的一些方法:

  • 在本地计算机上安装Web服务器,并在该服务器上同时提供图像和.html / .css / .js文件。 PHP& IIS都有出色的本地版本。

  • 将您的图片放在符合CORS标准的托管服务上(imagur.com是其中之一)

  • 对于小型项目,有时可以将图像和网页文件全部放在桌面上。