Ошибка перекрестного происхождения при использовании getImageData

Следующий код вызывает ошибку CORS:

const img = document.createElement('img');
img.src = url;

img.onload = () => {
  if (img.width > img.height) {
    img.height = 224;
  } else {
    img.width = 224;
  }

  document.body.appendChild(img);

  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');

  canvas.width = img.width;
  canvas.height = img.height;
  context.drawImage(img, 0, 0 );
  img.crossOrigin = 'Anonymous';
  img.setAttribute('crossOrigin', '');
  const imgData = context.getImageData(0, 0, img.width, img.height);
};

core.js:1673 ERROR DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data. at HTMLImageElement.img.onload [as __zone_symbol__ON_PROPERTYload]

Он не работает в части getImageData, но создание img и добавление его к телу работает нормально.

В моем коде есть ошибка? Я не понимаю, почему я могу отображать изображение, но когда я хочу получить ImageData, я получаю сообщение об ошибке.

Есть идеи или объяснения?

Это функция безопасности. К данным изображения из домена, отличного от домена главной страницы, нельзя получить доступ через такой холст.

Pointy 03.10.2018 23:12

Возможно, вам нужно протестировать этот код локально, на простом сервере Python или HTTP-сервере узла.

Battlesquid 03.10.2018 23:25
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
32
0

Другие вопросы по теме