如何使用从Phonegap应用程序运行的canvas来启用CORS?

时间:2014-05-14 00:33:50

标签: javascript html5 cordova canvas

我正在使用KineticJS将图像添加到canvas元素中,当添加任何图像时,由于CORS安全问题,我无法获取渲染画布的dataUrl。

我在StackOverflow上找到的修复建议在"服务器"上传递allow-access-origin标头,但由于这是在iPad上运行的本地应用程序,因此没有服务器,因此它被认为是本地的。

是否有启用dataUrl功能的解决方法,以便我可以保存" tainted"在iPad上本地运行时画布?

我用来抓取网址的代码如下:

$(document).on("tap", "#share-menu-button", function() {
    stage.toDataURL({
        callback:function(dataUrl) {
            alert(dataUrl);
        }
    });
});

1 个答案:

答案 0 :(得分:0)

我试图在 Cordova 的 iOS 上使用“file:///”方案对图像执行 canvas.toDataURL,并收到各种错误,包括:“Access-Control-Allow-Origin 不允许使用 Origin null”。

对我有用的解决方案包括两个步骤:

  1. 添加到 config.xml 的 部分:

如此处所述: https://cordova.apache.org/announcements/2020/06/01/cordova-ios-release-6.0.0.html

  1. 使用以下方法将成功回调中从 navigator.camera.getPicture() 返回的文件名从“file:///”方案更新为新的“app://”方案:

    imageFileName = window.WkWebView.convertFilePath( imageFileName )

作为(种类)记录在此处: https://github.com/apache/cordova-plugin-camera/issues/622#issuecomment-659357799