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

时间:2012-04-25 22:51:17

标签: jquery

我正在使用这样的东西通过jquery ajax获取图像。

$.ajax({
   url: imageurl,
   type:'GET',
   contentType: 'image/png',
   success: success,
   error: error,
   timeout: 5000
});

我可以看到我的请求标题包含

  

Access-Control-Request-Headers:origin,content-type,accept

另一方面,如果我设置了像

这样的img元素
<img src="imageurl" ...

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

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

1 个答案:

答案 0 :(得分:1)

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

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

历史上,不允许脚本执行跨站点HTTP请求,这些标头是新的“跨源共享”功能的一部分。请参阅:https://developer.mozilla.org/en/http_access_control

请注意,可能可以通过使用jquery来生成'img'标记,这可能会以您想要的方式进行操作。我没试过,但值得一试......