我们的调查向我们表明,并非所有浏览器都以统一的方式尊重http缓存指令.
出于安全原因,我们不希望在我们的应用程序某些网页缓存,有史以来,通过Web浏览器.这必须至少适用于以下浏览器:
我们的要求来自安全测试.从我们的网站注销后,您可以按后退按钮查看缓存页面.
我有一个ASP.NET MVC 3应用程序.此应用程序通过JQuery请求记录.JQuery回调一个以JSON格式返回结果的控制器动作.我无法证明这一点,但我担心我的数据可能会被缓存.
我只希望将缓存应用于特定操作,而不是所有操作.
是否有一个属性可以放在一个动作上以确保数据不会被缓存?如果没有,我如何确保浏览器每次都获得一组新记录而不是缓存集?
我被告知要防止用户信息泄露,只有"无缓存"的响应是不够的."无商店"也是必要的.
Cache-Control: no-cache, no-store
Run Code Online (Sandbox Code Playgroud)
在阅读本规范http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html后,我仍然不太清楚为什么.
我目前的理解是它只适用于中间缓存服务器.即使"无缓存"作为响应,中间缓存服务器仍然可以将内容保存到非易失性存储.中间缓存服务器将决定是否使用保存的内容进行后续请求.但是,如果响应中存在"no-store",则不应该在中间缓存服务器上存储内容.所以,它更安全.
还有其他原因我们需要"无缓存"和"无商店"吗?
我在IE 7,8,9中通过HTTPS使用@ font-face遇到了一个问题 - 它根本就没有加载.包含HTML页面是否托管在HTTPS上并不重要,当我尝试通过HTTP加载EOT字体时,它不起作用.有没有人见过这种行为?
托管该字体的服务器正在发送正确的content-type ="application/vnd.ms-fontobject"
我尝试了多种字体,因此它并不特定于字体.
字体是在Font Squirrel上生成的
@font-face {
font-family: 'GothamCondensedBold';
src:url('path/to/fontgothmbcd-webfont.eot');
src:url('path/to/fontgothmbcd-webfont.eot?#iefix') format('embedded-opentype'),
url('path/to/fontgothmbcd-webfont.woff') format('woff'),
url('path/to/fontgothmbcd-webfont.ttf') format('truetype'),
url('path/to/fontgothmbcd-webfont.svg#GothamCondensedBold') format('svg');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
我发现特定的客户端(win7 + IE8)无法下载文件(PDF文件)
其中包含Cache-Control: HTTP头中的无缓存 ;

但如果标题包含Cache-Control:no-cache ="set-cookie,则下载没有问题.

并且..在第一种情况下,如果我以管理员身份运行IE8,下载没问题.(注意我在win7中以管理员身份登录.这很奇怪..)
我建立了一个博客,它说SSL和无缓存.我认为这是相似但不同的问题.
谢谢.
这应该是关于IE8下载问题的老问题.我使用PHP来设置响应头像:
header("Pragma: public");
header("Expires: 0");
header("Content-type: application/octet-stream");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: ".strlen($content));
header("Content-Disposition: attachment; filename='$filename'");
Run Code Online (Sandbox Code Playgroud)
并且连接被Fiddler捕获.
当我尝试在IE8(而不是SSL)中下载带有上述标题的文件时,消息框:
"Internet Explorer无法打开此Internet站点.请求的站点不可用或无法找到." 弹出并下载停止.
我在网上搜索并尝试了很多解决方案,但似乎没有一个可行.这个问题还有其他解决办法吗?
PS:我试过:删除标题中的响应标题/重置contentType /将网站添加到受信任的站点/设置"不将加密的页面保存到磁盘"为true.
谢谢.
我有一个CMS应用程序代码,该代码调用Response.Cache.SetNoStore()所有请求,如果我是对的,这将防止代理/ cdn缓存那些页面/内容。因此,我有条件地调用以下代码:
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(0, 30, 0));
Response.Cache.SetValidUntilExpires(true);
Run Code Online (Sandbox Code Playgroud)
但这不会从响应标头中删除无存储参数,这是返回的http标头:
Cache-Control:public, no-store, must-revalidate, max-age=1800
Run Code Online (Sandbox Code Playgroud)
因此,我的问题是,我该如何实用地删除nostore参数?如果这不可能,那么我如何/在哪里解析/修改http-header,因为我尝试在PagePreRender事件上进行解析并且没有应用nostore参数...这使人怀疑这是哪个生命周期附加到标题?