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 里拿到了么,,,但你这里是图片,不是可执行脚本,当然会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值