javascript - Canvas + CrossOrigin Anonymous + CORS + Chrome + Mac OS X

标签 javascript macos google-chrome canvas cors

为了将图像加载到 Canvas 上,我使用此方法=>

const load = (url: string) =>
    new Promise((resolve, reject) => {
        const image = new Image();

        if (!image) reject();

        image.crossOrigin = 'Anonymous';
        image.src = url;

        image.addEventListener('load', () => resolve(image));
        image.addEventListener('error', err => reject(err));
    });

经过大量调查后,我发现我遇到了这个错误:https://bugs.chromium.org/p/chromium/issues/detail?id=409090

确实,情绪板中不会显示随机图片。

我没有写代码,所以我不确定这行代码的必要性,有或没有它有什么区别?

image.crossOrigin = 'Anonymous';

更新1

当我删除 image.crossOrigin = 'Anonymous'; 时,图像加载不再存在 CORS 问题,但在尝试使用 canvas.toDataURL( 'image/png') 在 Canvas 上

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

最佳答案

如果您的图像来自不同的域,并且您希望在绘制这些图像后能够导出 Canvas 内容,那么您别无选择,只能使用 crossOrigin 属性加载它们。

如果您确实面临链接的错误,根据它,正确的解决方法是始终从服务器响应发送 CORS header ,无论请求是否使用 Origin header 发出。

一个快速的解决方法是通过在图像的 src 中附加随机查询字符串来避免缓存 (img.src = url + '?v=' + Math.random();) .

关于javascript - Canvas + CrossOrigin Anonymous + CORS + Chrome + Mac OS X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609800/

相关文章:

javascript - CSS - 添加任意未知属性名称是否合法?

sql-server - 如何将 REST 调用中的数据导入到 MAC 上的 SQLite 数据库中?

javascript - 无法让 Chrome 存储加载任何内容

html - 我无法在 div 上应用悬停效果

javascript - GetElementById 在 Chrome 中给出 ReferenceError

javascript - Jquery隐藏和显示按钮

javascript - 动态导入不适用于组合的 CRA 和 SSR

javascript - 将 json 传递到 JavaScript 数组中

python - 导入pygame时出错

Java - 如何使用代码确定正在运行的 Mac OS X 版本?