Jquery 使用$.ajax()获取图像-访问控制请求头

Jquery 使用$.ajax()获取图像-访问控制请求头,jquery,Jquery,我正在使用类似的东西通过jQueryAjax获取图像 $.ajax({ url: imageurl, type:'GET', contentType: 'image/png', success: success, error: error, timeout: 5000 }); 我可以看到我的请求头包括 访问控制请求标题:来源、内容类型、接受 另一方面,如果我设置一个img元素,比如 <img src="imageurl" ... 观察请求头,我没有

我正在使用类似的东西通过jQueryAjax获取图像

$.ajax({
   url: imageurl,
   type:'GET',
   contentType: 'image/png',
   success: success,
   error: error,
   timeout: 5000
});
我可以看到我的请求头包括

访问控制请求标题:来源、内容类型、接受

另一方面,如果我设置一个img元素,比如

<img src="imageurl" ...

观察请求头,我没有看到任何“访问控制请求头”


只是想知道$.ajax()添加此标头的原因是什么。为什么要为一个应该是有效的跨站点HTTP请求的图像添加这个。删除此头是一种良好的做法,甚至是可能的做法吗?

使用XMLHttpRequest访问的任何内容都将具有这些头,无论它是否为图像。关键部分是请求的来源(脚本而不是“img”标记)

这个标题实际上是由浏览器创建的,因此,不,不可能通过jquery删除它

历史上,脚本不允许执行跨站点HTTP请求,这些头是新的“跨源共享”功能的一部分。见:


请注意,使用jquery生成一个“img”标记可能会绕过这个问题,这个标记可能会以您想要的方式进行操作。我没有试过,但值得一试。

与其设置ajax请求,不如直接使用src加载图像。您可以附加一个onload事件来处理您拥有的success函数。类似于此:@scrapsedcola谢谢,但我需要超时,因此我无法使用load()。我只想强调一个事实,即通过创建图像标记,我能够让Chrome和Firefox正确发送源标头。很好地利用您的想法生成图像标签。