无需缓存跨域即可获取图像或其标题

问题描述 投票:0回答:3

我正尝试在不缓存图像的情况下(出于正当理由)检索图像的大小,或者在不下载图像本身的情况下获取其Content-Length标头。我需要这些信息以使远程图像与控制图像相匹配(如果有其他方法可以在这些约束条件下实现该目标,那么我将不胜枚举)。服务器无法控制。这是我尝试过的:

  1. 使用此脚本,我可以轻松获取图像,但不能阻止其缓存:

    var img = new Image();
    img.src  = 'http://www.nasa.gov/sites/default/themes/NASAPortal/images/nasa-logo.gif';
    
  2. 通过此操作,我在调试器中获得了标头,但无法访问它们:

    $.ajax({
        url: 'http://www.nasa.gov/sites/default/themes/NASAPortal/images/nasa-logo.gif',
        type: 'HEAD',
        success: function(data){
            console.log(data);
        }
    });
    
  3. 这样,我无需缓存即可获取图像,但无法访问其属性:

    <iframe src="http://www.nasa.gov/sites/default/themes/NASAPortal/images/nasa-logo.gif"></iframe>
    
  4. 我已经尝试了每种JSONP组合,包括convertersdataFilter都没有成功。

  5. 我已经探索了仅下载图像的前n个字节的可能性(这样就不会出现缓存问题),但是似乎只有使用AJAX才有可能,因为它是跨域的,因此阻止了尝试JSONP似乎也不起作用。

总之,我已经尝试了所有我能阅读和思考的内容...我花了过去48小时(和数百个小提琴)来寻找解决方案。我始终认为,采用上述方法,应该有一种方法...

我想念什么?

javascript jquery caching browser-cache
3个回答
1
投票

如何添加查询字符串以避免缓存

var img  = new Image();
var rand = (new Date()).getTime();;

img.src  = 'http://www.nasa.gov/ ... /images/nasa-logo.gif?r=' + rand ;

0
投票

您可以使用以下响应标题提供图像:

缓存控制:无缓存,无存储

这将阻止浏览器对其进行缓存,包括代理服务器。


-1
投票

您可以获取系统毫秒数,并在网址末尾添加'?time ='+毫秒,大多数http缓存均基于网址作为键,因此您可能会在每次请求时获得一个新图像

© www.soinside.com 2019 - 2024. All rights reserved.