我正在开发一个本地应用程序,它显示来自安全本地服务器的敏感图像,我需要确保这些图像只能在我的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://缓存标签中看到图像,但它让我担心我在网络监视器中看到(来自缓存)。
在我的Firefox缓存查看器中,我看到图像的URL,但设备列显示“内存”。任何看内存的人都可以在一段时间后查看它,尤其是在用户退出后?
所以我想我真正的问题是这两个浏览器在创建blob时会做什么?任何人都可以在浏览器外访问这些图像吗?它在移动设备/平板电脑设备上做了什么?
如果我使用base64字符串传输图像,那么在隐私和安全方面会更安全还是更差?