CORS 已启用,但 toDataURL 仍会引发警告

Posted

技术标签:

【中文标题】CORS 已启用,但 toDataURL 仍会引发警告【英文标题】:CORS is enabled but toDataURL still throws a warning 【发布时间】:2014-02-13 06:43:03 【问题描述】:

正如标题所说,我已为所有图像启用了 CORS,但在尝试将它们放到画布上然后提取该画布(Chrome 和 FF)时,我仍然遇到错误。我在其中一张图片上运行了一个小嗅探器来测试它,它似乎实际上返回了正确的标题:

访问控制允许来源:*

我错过了什么吗?

【问题讨论】:

...您还在图像对象上指定 crossOrigin="anonymous" 属性?如果是这样,那不是问题,我们需要更多代码。 这解决了问题,@markE。谢谢你。我也在尝试使用 PaintbrushJS 为这些图像着色,但现在它给了我“跨源资源共享策略拒绝了跨源图像加载”。任何想法?编辑:似乎可能是因为我所有的图像都是通过 JS 动态加载的。 【参考方案1】:

您需要请求服务器使用CORS,只需将此属性添加到图像标签:

<img crossOrigin="anonymous" ... />

或从 javascript 动态地使用它作为属性(假设 img 已创建或获得):

var img = new Image;
img.onload = callback;
img.crossOrigin = '';   /// = anonymous
img.src = '...';

如果您要加载多个图像,您可以使用支持跨域请求的图像加载器(例如我的YAIL loader,您可以请求使用 CORS 加载所有或单个图像)。

【讨论】:

以上是关于CORS 已启用,但 toDataURL 仍会引发警告的主要内容,如果未能解决你的问题,请参考以下文章

即使启用了CORS,Web Api仍会始终发生403错误

Web API 2 启用 CORS 引发 Access-Control-Allow-Origin 错误

CORS 已启用,但访问仍被拒绝

ASP.NET Core Cors 已启用但无法正常工作

在 spring 安全标签中启用 CORS

如何在 Firefox 上启用 CORS