Javascript 来自跨域的图像在HTML中显示良好,但ajax从浏览器控制台调用相同的图像失败

Javascript 来自跨域的图像在HTML中显示良好,但ajax从浏览器控制台调用相同的图像失败,javascript,jquery,html,ajax,google-chrome-devtools,Javascript,Jquery,Html,Ajax,Google Chrome Devtools,我们的静态内容服务器为各种门户网站提供图像服务(我是黑匣子)。在web门户上,所有图像都很好,即使它们来自不同的域(假设静态服务器相应地设置http头)。但是,如果我尝试通过ajax调用(使用jquery或xmlhttp)使用浏览器控制台访问同一映像,则会出现跨域调用失败错误(即请求成功,但浏览器拒绝响应)。下面是一个简单的JSFIDLE来说明这个问题 /*图像标签工作正常*/ /*ajax调用失败*/ var a=$.ajax('https://casinogames.bwin.com/h

我们的静态内容服务器为各种门户网站提供图像服务(我是黑匣子)。在web门户上,所有图像都很好,即使它们来自不同的域(假设静态服务器相应地设置http头)。但是,如果我尝试通过ajax调用(使用jquery或xmlhttp)使用浏览器控制台访问同一映像,则会出现跨域调用失败错误(即请求成功,但浏览器拒绝响应)。下面是一个简单的JSFIDLE来说明这个问题

/*图像标签工作正常*/
/*ajax调用失败*/
var a=$.ajax('https://casinogames.bwin.com/htmllobby/images/gameicon/melonmadness.jpg');


我验证了请求/响应头,它们在两种情况下完全相同。我想知道来自图像标签的请求和ajax之间是否有任何特定的区别?我尝试了IE控制台和Chrome控制台,结果是一样的。

您不能以正常方式从不同的域进行ajax调用

这是一本书

您可以将其查找为“跨域ajax调用”

编辑 通过jquery显示远程img,如

var a = $('img').prop ('src', 'http://placehold.it/10x10');
我想知道来自图像标签的请求和ajax之间是否有任何特定的区别

请求不会有任何明显的不同,但无论采用哪种方式,当请求是跨源请求时,浏览器都不会使JavaScript可以使用图像数据

从img元素向用户显示图像不是安全风险


让第三方编写的JavaScript访问另一台服务器的数据是一种安全风险。

我了解如何使用JSONP(特别是json数据)和CORS(使用访问控制允许源代码)两种方法处理跨域调用。然而,我的问题更具体地针对一个场景,即请求在html中正常工作,但在ajax中却无法正常工作。请求/响应头中没有差异。在这个场景中,浏览器如何区分来自html的调用和来自javascript的调用?如果您只想通过javascript显示图像。你可以创建一个img标签,并通过javascript设置它的src值。嗨,Azadrum,我的问题不是怎么做……但真正的问题是为什么浏览器会以这种方式运行……请阅读上面昆汀的答案,这对于疑问是非常有意义的。无论如何,谢谢你的帮助,非常感谢。“从img元素向用户显示图像不是安全风险。让第三方编写的JavaScript访问另一台服务器的数据是安全风险。”这澄清了我的疑问。
var a = $('img').prop ('src', 'http://placehold.it/10x10');