2

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

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

我可以看到我的请求标头包括

Access-Control-Request-Headers:origin, content-type, 接受

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

<img src="imageurl" ...

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

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

4

1 回答 1

1

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

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

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

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

于 2012-04-25T23:07:55.973 回答