HTML5 Canvas 访问控制允许来源错误

2024-02-29

当我尝试从 canvas 元素获取数据时,出现以下 javascript 错误:

错误:不支持 canvas.toDataURL()。 [例外...“操作不安全。”代码:“18”ns结果:“0x80530012(安全错误)”...

画布是从不同域提供的图像绘制的,但我使用代理将这两行添加到图像响应标头:

访问控制允许来源:*

访问控制允许凭据:true

我缺少什么?

Thanks,
Ted


要发出正确的 CORS 请求,您必须设置图像的跨源属性 http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#attr-img-crossorigin到“匿名”。来自 Mozilla 开发者网络。

var img = new Image,
    canvas = document.createElement("canvas"),
    ctx = canvas.getContext("2d"),
    src = "http://example.com/image"; // insert image url here

img.crossOrigin = "Anonymous";

img.onload = function() {
    canvas.width = img.width;
    canvas.height = img.height;
    ctx.drawImage( img, 0, 0 );
    localStorage.setItem( "savedImageData", canvas.toDataURL("image/png") );
}
img.src = src;
// make sure the load event fires for cached images too
if ( img.complete || img.complete === undefined ) {
    img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
    img.src = src;
}

浏览器支持不包括任何已知版本的 IE 和未发布版本的 Safari。 Firefox 和 Chrome 拥有多年的支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 Canvas 访问控制允许来源错误 的相关文章

随机推荐

  • 在 OpenGL ES 2.0 / GLSL 中,哪里需要精度说明符?

    您要填充值的变量是否决定了您在等号右侧使用的精度 例如 这里的精度说明符在含义上是否有任何区别 gl FragColor lowp vec4 1 这是另一个例子 lowp float floaty 1 2 floaty lowp 1 low
  • Bash 监控磁盘使用情况

    我买了一个 NAS 盒子 上面有 debian 的精简版 前几天它空间不足 但我没有意识到 我基本上想编写一个 bash 脚本 每当磁盘已满 90 以上时就会提醒我 有谁知道可以执行此操作的脚本或给我一些关于编写脚本的建议吗 bin bas
  • C# 获取 cmd 输出,如真实 cmd 窗口中所示

    我有一个BackgroundWorker运行 cmd 进程并向其写入多个命令的线程 有些命令可能需要一段时间才能完成 因此我想向用户显示进度的 cmd 输出 我运行 cmd 命令的代码如下所示 private void background
  • 在C中的两点之间选取随机数

    我想知道 是否有可能在 c 中生成两个限制之间的随机数 IE 我的程序是这样设置的 function x generate random number while 1 function x delay 所以基本上我希望每次调用该函数时都会生
  • 何时在基准测试表达式中进行插值

    The 基准测试工具文档建议将全局变量插入基准测试表达式中 然而 他们提供的示例的运行时间差距似乎已经大大缩小 在他们的例子 https github com JuliaCI BenchmarkTools jl blob master do
  • 带有上下文管理器的 ThreadPoolExecutor

    我不明白为什么这段代码的行为方式不同 在第一种情况下 代码将打印 elo 19 秒后我们将看到 3 在其他情况下 我们将首先等待 19 秒 然后我们将看到 elo 你能给我解释一下吗 from concurrent futures impo
  • 斐波那契计算时间

    递归式斐波那契与循环式斐波那契之间是否存在明显的计算时间差异 我使用递归将斐波那契数列运行到 40 个位置 然后直接使用循环 看起来计算时间的差异只是academic 用C语言编写 递归解决方案 int main int argc cons
  • 如何在启动过程后切换Linux内核控制台?

    在我的嵌入式系统上 我通常使用 dev ttyS0 作 为主控制台 这是通过传递内核参数来实现的console dev ttyS0什么时候init尽其所能 getty在指定的同一设备上触发inittab by eg ttyS0 respaw
  • 将毫秒时间戳反序列化为 java.time.Instant

    我正在尝试使用 Jackson 读取 JSON 文件并将以纪元毫秒形式存储的字段之一存储为 JavaInstant 但是反序列化的行为并不如预期 这是我在尝试读取时间戳时看到的内容 1503115200000 杰克逊正在设定Instant字
  • 简单警报和徽章上的 IOS 10.2 UserNotifications 问题

    在写这篇文章之前 我对 UserNotification 框架进行了大量研究 该框架在 IOS 10 中取代了 UILocalNotification 我还按照本教程学习了有关此新功能的所有内容 http useyourloaf com b
  • 使用knitr使R块与文本对齐

    如何让 R 代码 R 块 与我的文本内联 Example 请使用 install packages ISwR 安装软件包 下列的来自一辉的建议 https groups google com forum fromgroups topic k
  • 如何让子字符串在 matlab 中工作?

    如果这是一个新问题 我很抱歉 但我已阅读文档here http www mathworks com help symbolic mupad ref substring html它没有说明在使用子字符串之前必须输入任何命令 但是 当我尝试按如
  • Xamarin.Forms - XamlCompilation MissingMethodException

    我想提高 Xamarin Forms UWP 应用程序的性能 因为它在发布模式下非常慢 选中 NET Native 因此 我在 PCL 项目中的程序集级别应用了 XAMLC assembly XamlCompilation XamlComp
  • 如何避免“框架分离”错误异步验证或使用 Puppeteer 进行重定向?

    以前的一个answer https stackoverflow com questions 51066987 puppeteer how can i wait for ajax request and process the result为
  • FireStore - 如何绕过数组“不包含”查询

    经过一些研究 很明显我无法使用 FireStore 来查询给定数组不包含的项目 有人有针对这个用例的解决方法吗 用户注册后 应用程序会获取一堆卡片 每张卡片在 FireStore 中都有相应的 卡片 文档 用户与卡片交互后 卡片文档将用户的
  • (PHP) 如何解析Google搜索结果中的URL?

    如何获取google搜索结果的url 我使用 Zend Gdata Gbase 来获取搜索谷歌结果 而不是 DomDocument htmlsimpleparser 因为在我看来 Zend Gdata Gbase 专门用于解析谷歌结果 如果
  • GTK+ 中的 CSS 样式

    好的 我最近开始使用 GTK 用 C 语言进行编程 我的代码中有一个 GdkToggleButton 我想用 css 添加样式 我在这里阅读了几乎所有 GTK3 文档https developer gnome org gtk3 stable
  • 如何从结果中排除零长度正则表达式匹配? [复制]

    这个问题在这里已经有答案了 我进行了快速谷歌搜索 但找不到任何结果 和 包括零长度匹配 我怎样才能将它们从我的结果中排除 例如运行一个 ada 在 1 和 3 处返回零长度匹配 如何排除它们 这是一个非常普遍的问题 我宁愿根据具体情况来解决
  • 用于处理接收中的异步操作的 Akka 模式

    我有一个 Actor 它接收指标数据点并定期聚合并将它们保存到磁盘 后一个操作执行 I O 因此我不想使用阻塞操作 但是 如果我将其切换为异步 如何防止在聚合完成之前接收其他数据点而不阻塞某处 我见过的一种模式是使用Stash 像这样 cl
  • HTML5 Canvas 访问控制允许来源错误

    当我尝试从 canvas 元素获取数据时 出现以下 javascript 错误 错误 不支持 canvas toDataURL 例外 操作不安全 代码 18 ns结果 0x80530012 安全错误 画布是从不同域提供的图像绘制的 但我使用