Ajax请求跨域图片,ajax跨域请求图片

jsonp 应该不行,报错信息也提示了,这是张图片,不是可执行脚本,可以换种方式:

window.onload = function() {

var aLink = document.createElement('a');

aLink.href = 'http://favicon.byi.pw/?url=https://www.baidu.com/';

aLink.download = 'img';

aLink.style.display = 'none';

document.body.appendChild(aLink);

aLink.click();

};

jsonp 为什么不行,这要涉及到 jsonp 的原理了,比如一个可以通过 jsonp 访问的 url

http://freegeoip.net/json/?callback=handleResponse

实际上这个 url 里的内容应该是这个样子:

handleResponse(data);

jsonp 技术,实际上代码是这样:

var script = document.createElement("script");

script.src = "http://freegeoip.net/json/?callback=handleResponse";

document.body.insertBefore(script, document.body.firstChild);

很明显,这个元素加载好了后,肯定直接执行脚本里的代码,实际上就是执行

handleResponse(data);

那么,如果你在本地脚本里定义了 handleResponse 函数

function handleResponse(data){

// do something about the data

}

那你两串代码连在一起不就是:

handleResponse(data);

function handleResponse(data){

// do something about the data

}

那这个跨域的数据不就直接在 handleResponse 里拿到了么,,,但你这里是图片,不是可执行脚本,当然会报错