Ajax,子域名,200响应和图像 - 好吗?

时间:2010-11-19 14:20:00

标签: ajax image firebug same-origin-policy jquery-load

这是一个与AJAX, Subdomains and the 200 OK response(和JavaScript Same Origin Policy - How does it apply to different subdomains?)非常相似的问题,但有一个转折点。我有一种情况:

  • 域名(www.example.com)
  • 子域名(sd.example.com/cat/id)
  • 的页面
  • 需要向另一个子域(cdn.example.com)发出ajax样式的请求

与上述问题相反,我要求的是图像。

  • 获取图片请求(使用jQuery $ .load())

这似乎工作得很好。因为它工作得很好,当有人指出它在Firebug中产生错误时,同一起源的策略并没有立即发生在我身上。

  • 图片 ARE 在localhost上加载(apache VirtualHost url of test.sd.example.com/cat/id)

然而,由于我已经联系到了这个问题,我现在已经想到了这一点,我担心这在生产中无法可靠地运作。

  • 将继续在生产环境中工作 - 它是否可以跨浏览器可靠地工作?
  

答案:不 - 它只是看起来就像工作一样;它真的不是

  • 如果没有,我该如何解决? (我不认为我可以使用JSONP图像......我可以吗?)
  

答案:继续设置图像的src&等待显示直到加载事件被触发。

  • 如果是这样,我该如何阻止Firebug错误?如果我能。 (他们正在吓唬其他开发者。)
  

答案:与上面相同 - 摆脱实际对图像文件进行GET请求的步骤。

初始代码

function(imageUrl, placeTarget){
 var i = new Image();
 var img = $(i);
 img.hide()
 .load(imageUrl, function(e){
  // console.log("loadImage: loaded");
  placeTarget.attr("src", imageUrl);
  return true;
 })
 .error(function(){
  // error handling - do this part
  // console.log("loadImage: error");
  return false;
 });
 return;
} // loadImage

2 个答案:

答案 0 :(得分:1)

为什么不通过创建图像元素和设置src将图像插入到页面中。什么可以更简单?

编辑:...通过javascript

我不确定这是完全正确的,但在jquery中:

img = $('<img>');
img.attr('src', 'http://somewhere.com/some_image.jpg');
$('#place_to_add').append(img);
img.ready(fade_into_next);

答案 1 :(得分:0)