javascript - 跨源资源共享策略拒绝跨源图像加载

标签 javascript google-maps html2canvas

我使用 html2canvas(来自 html2canvas.hertzen.com)来捕获屏幕截图。我收到这样的奇怪错误: 我的网页代码放在一台主机上,比如说主机A。 如果我的网页包含另一台主机(例如主机 B)上的图像,那么我会遇到此错误: 跨源图像加载被跨源资源共享策略拒绝

但是,令人困惑的部分是,如果主机 B 是 facebook(我的图片是 facebook https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/372701_100000684388457_1551561655_q.jpg 的直接链接),那么错误就会消失。

我的功能

html2canvas([document.body], {
                    useCORS : true,
                    logging : true,
                    onrendered : function(canvas) {
                        document.body.appendChild(canvas);
                        var myImage = canvas.toDataURL("image/png");
                        window.open(myImage);
                    }

有人有提示吗?谢谢

解决方案

 html2canvas([document.body], {
                                    useCORS: true,
                                    proxy: "Server",
                                    onrendered : function(canvas) {                               
                                        ListUCapture = canvas.toDataURL("image/png");                                                           
                                    }
                     });
Server is server of node.js

最佳答案

如果您希望将跨源图像加载到 Canvas 上,则需要使用跨源 header 或在同一源下提供图像。 Facebook 下的该图像使用以下 header 选项集提供:

访问控制允许来源:*

意思是,它可以使用useCORS选项进行跨域加载。但是,您的主机 B 似乎没有为它们提供跨域 header 设置。

关于javascript - 跨源资源共享策略拒绝跨源图像加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990678/

相关文章:

javascript - Webpack 在没有 jQuery 的情况下无法加载主干

javascript - 如何在页面加载后立即激活 ResponsiveVoice?

javascript - Vue js 使用范围槽并尝试从内部使用属性但没有可见性

javascript - google maps api中带有图像和数字的标记

javascript - Google map 未出现(未加载)

html2canvas 根本不工作

javascript - jsPDF 生成内部包含拉伸(stretch)元素的 pdf

javascript - 样式未完成加载错误: Mapbox GL JS

android - SupportMapfragment 不填充父级

javascript - Html 到 Canvas 到 Base64 到 PDF