javascript - 无法理解如何避免 JavaScript 中的跨源污染

标签 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"; 

最佳答案

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

以下是遵守 CORS 安全性的一些方法:

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

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

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

关于javascript - 无法理解如何避免 JavaScript 中的跨源污染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24771123/

相关文章:

javascript - 使用 firebase 的应用程序/无应用程序错误

ios - 如何在 Xcode Assets 目录中分配启动图像?

imagemagick 中的图像圈裁剪

javascript - 单击可拖动层顶部时如何获得准确的指针位置?

javascript - 当关键字包含在特定的 td 中时如何删除整个 tr

javascript - 如何获取在javascript中动态创建的Button(onClick)的ID

javascript - 如何为所有动态生成的div添加通用的Javascript函数?

html - 不能并排放置没有边距的表格图像

Javascript Canvas 动画

javascript - CanvasRenderingContext2D 中的 alpha 属性是什么?