javascript - 在 Canvas 上绘制图像时如何避免 CORS 错误?

标签 javascript html canvas dropbox

目前正在为我的编码训练营开发一个项目。我正在尝试将创可贴覆盖在熊的图像上,并尝试使用 Canvas 来检查他们单击的区域的颜色,以确保他们不会将创可贴放在实际图像周围的空白区域上。

如您所见,我尝试通过将图像托管在保管箱上,然后使用具有跨源匿名的原始链接来解决原始污染错误。我的导师告诉我尝试这个。但是现在我在将图像绘制到 Canvas 上时遇到错误。它说:

“来自“https://www.dropbox.com/s/xxb6ndsf71jvy25/myBear.png?raw=1”的重定向已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin” header 。因此不允许访问源“null”。”

有人可以帮我提供一个简单的解决方案吗?

这是我的 HTML:

<script src="https://code.jquery.com/jquery.js"></script>

<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>

<script type="text/javascript" src="assets/js/app.js"></script>

<canvas id="canvas" width="1331" height="941">Helllo</canvas>

<img src="https://www.dropbox.com/s/xxb6ndsf71jvy25/myBear.png?raw=1" onload="draw()" style="display: none" id="theBear" crossorigin="anonymous">

<img src="assets/images/bandaids/001-medical-3.png" class="bandAids">

<link rel="stylesheet" type="text/css" href="assets/css/style.css">

相关 JavaScript:

function draw() {
  var canvas = document.getElementById("canvas");
  var ctx = canvas.getContext("2d");
  var img = document.getElementById("theBear");
  ctx.drawImage(img,0,0);
  console.log("drew image");
};

$(document).on("click","#canvas", function(event) {
  var c = this.getContext('2d');
  var p = c.getImageData(event.pageX, event.pageY, 1, 1).data; 
  var hex = "#" + ("000000" + rgbToHex(p[0], p[1], p[2])).slice(-6);
  console.log(hex);
  database.ref().child("bandAids").push({
    xCord: event.pageX,
    yCord: event.pageY,
    bandAid: myBandAid, 
  })
  console.log(event);
})

最佳答案

我找到了一个解决方案,但不确定它是否适用于所有相关问题,并且不太明白它为什么有效。

只需将网址中的 www.dropbox.com 更改为 dl.dropboxusercontent.com 即可。

在这里找到:

https://www.dropboxforum.com/t5/API-support/CORS-issue-when-trying-to-download-shared-file/td-p/82466

关于javascript - 在 Canvas 上绘制图像时如何避免 CORS 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46257444/

相关文章:

image - 获取透明形式的底层窗口

javascript - 将位置坐标转换为 Canvas 坐标

javascript - 使用 Javascript 下载 Html5 canvas 元素作为具有文件扩展名的图像

javascript - 监控 angular.js 单页应用

JAvascript 180 到 -180 旋转

javascript - Jquery 简单的滑动菜单不起作用

jquery - Fadein With JQUERY 点击外部 html 文件

javascript - 如何将变量作为参数发送到单个文件组件中的方法?

Javascript NaN 阻止运行 Angular 单元测试

javascript - VideoJS 播放器卡在 IE9 上