'Fabric The image element contains cross-origin data, and may not be loaded

When a color tint is applied to the canvas object it triggers an error

react-dom.development.js:4091 Uncaught DOMException: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The image element contains cross-origin data, and may not be loaded.

Image loaded to Fabric Canvas without error, it can be rotated and resized. Its a PNG image I created.

fabric.util.loadImage(
  event.target.src,
  function (img) {
    var fab_image = new fabric.Image(img, {
      id: event.target.id
    });
    wallCanvas.add(fab_image);
    wallCanvas.renderAll();
  },
  { left: 100, top: 100, angle: 0, opacity: 1 },
);

Applying the filter tint triggers the error

var canvas2dBackend = new fabric.Canvas2dFilterBackend();
fabric.filterBackend = canvas2dBackend;
fabric.filterBackend = fabric.initFilterBackend();

var colorButton = document.querySelector('#select-color');

var filter = new fabric.Image.filters.BlendColor({
  color: colorButton.style.background,
  mode: 'tint',
  alpha: 0.5,
});

wallCanvas
  .getActiveObjects()
  .forEach(function (obj) {
    obj.filters[16] = filter;
    obj.filters.push(filter);
    var resizefilter = new fabric.Image.filters.Resize();
    obj.filters.push(resizefilter);
    obj.applyFilters();
  });
wallCanvas.renderAll();

The bucket CORS rule

resource "aws_s3_bucket_cors_configuration" "cdn" {
  bucket = aws_s3_bucket.cdn.bucket

  cors_rule {
    allowed_headers = ["*"]
    allowed_methods = ["GET"]
    allowed_origins = ["*"]
    max_age_seconds = 3000
  }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source