从AJAX请求另一个域中获取图像数据(Get image data from another dom

2019-10-22 23:18发布

我想从一个AJAX请求另一个域中获得的图像的二进制数据。 我尝试了各种方法,但没有有效的解决方案。 我发现在互联网上的一些代码,看起来很不错,但即使有这样的要求,我得到的错误。

什么是我错了? 有没有一种标准化的方式来做到这一点?

这里是我试过至今:

var request = this.createCORSRequest('GET', 'http://url/to/image.png');
request.onload = function () {
    var text = request.response;
};
request.onerror = function (error) {
    alert('Woops, there was an error making the request.');
};

request.send();

private createCORSRequest(method, url) {
        var xhr: XMLHttpRequest = new XMLHttpRequest();
        if ("withCredentials" in xhr) {

        // Check if the XMLHttpRequest object has a "withCredentials" property.
        // "withCredentials" only exists on XMLHTTPRequest2 objects.
        xhr.open(method, url, true);

        } else if (typeof XDomainRequest != "undefined") {

            // Otherwise, check if XDomainRequest.
            // XDomainRequest only exists in IE, and is IE's way of making CORS requests.
            var xdhr = new XDomainRequest();
            xdhr.open(method, url);

        } else {

            // Otherwise, CORS is not supported by the browser.
            xhr = null;

        }
        return xhr;
}

我甚至发现没有Ajax在这里计算器这个解决方案,但它不为我工作:

异步加载图像与jQuery

这里一个错误事件包含的属性的屏幕:

我的目标是从一个url这是我从一个Atom提要获取得到的图像的二进制代码。 我需要的二进制文件复制图片MS SharePoint中。

Answer 1:

您不能从另一个域,除非得到数据:

  • 远程服务器允许使用CORS它
  • 运行在不安全的模式浏览器。

原因:否则站点A将能够(恶意)读取从站点B的用户数据



Answer 2:

您必须添加页眉的方法,以允许跨域请求。 例如,如果你想从www.example.com/main.php获取数据,则必须添加页眉,以允许来自不同域调用这些方法。



文章来源: Get image data from another domain with AJAX request