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

标签 jquery

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

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

我可以看到我的请求 header 包括

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

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

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

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

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

最佳答案

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

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

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

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

关于jquery - 使用 $.ajax() 获取图像 - 访问控制请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324924/

相关文章:

javascript - 如果文件下载错误,则在提交表单上管理JSON服务器响应

jQuery Spy(垂直滚动条): after 4th iteration, 列表项动画向下,增加容器的高度

javascript - 如何从所有已检查的表行中获取所有 id?

javascript - 在调整窗口大小时更改 html 标签结构

javascript - 在 Responsive 上用另一个 img 属性更改 img src

JavaScript 上午/下午时间比较

javascript - 如果 DropDownList 选定索引已更改,则隐藏 gridview 行

javascript - 如何在一个文本框中附加用于自动完成的多个 json 结果

javascript - 谷歌地图之类的图像工具

Jquery 选项卡帮助