停止浏览器将图像缓存到磁盘

时间:2016-06-09 12:18:09

标签: javascript google-chrome firefox caching browser

我正在开发一个本地应用程序,它显示来自安全本地服务器的敏感图像,我需要确保这些图像只能在我的Web应用程序中查看 - 所以我不希望它们存储在磁盘上(通过缓存或类似的东西)这一点)。

以下是我的回复标题(nodejs express):

res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", "0");
res.send(image);

这是我的AngularJS代码,用于获取图像并进行渲染。我正在使用AJAX,因为我通过JWT验证用户,所以我需要包含auth标头。

$http.get(src, {
    responseType: 'arraybuffer'
})
.then(function(res){
    var headers = res.headers();
    var blob = new Blob([res.data], {
        type: headers['content-type']
    });

    image.src = $window.URL.createObjectURL(blob);
});

它似乎有效,但我对Chrome和Firefox开发人员工具向我展示的内容感到困惑。我需要100%确定这些图像不会存储在磁盘上。

但我明白了:

Status Code: 200 OK (from cache)

Chrome Dev Tools Image

我无法在chrome://缓存标签中看到图像,但它让我担心我在网络监视器中看到(来自缓存)。

在我的Firefox缓存查看器中,我看到图像的URL,但设备列显示“内存”。任何看内存的人都可以在一段时间后查看它,尤其是在用户退出后?

Firefox cache viewer

所以我想我真正的问题是这两个浏览器在创建blob时会做什么?任何人都可以在浏览器外访问这些图像吗?它在移动设备/平板电脑设备上做了什么?

如果我使用base64字符串传输图像,那么在隐私和安全方面会更安全还是更差?

1 个答案:

答案 0 :(得分:0)

Yoy可以通过jpg.js将jpg blob转换为画布图像数据,然后将其加载到画布上,并且不使用图像,在这种情况下,HTTP中不会加载任何图像和资源。