我被告知要防止用户信息泄露,只有"无缓存"的响应是不够的."无商店"也是必要的.
Cache-Control: no-cache, no-store
Run Code Online (Sandbox Code Playgroud)
在阅读本规范http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html后,我仍然不太清楚为什么.
我目前的理解是它只适用于中间缓存服务器.即使"无缓存"作为响应,中间缓存服务器仍然可以将内容保存到非易失性存储.中间缓存服务器将决定是否使用保存的内容进行后续请求.但是,如果响应中存在"no-store",则不应该在中间缓存服务器上存储内容.所以,它更安全.
还有其他原因我们需要"无缓存"和"无商店"吗?
我有一个本土的HTTPS服务器,提供简单的文件(它嵌入在我的应用程序中).它很棒 - 一直在使用它.
最近添加了SSL支持 - Chrome,FireFox和IE都喜欢它并加载页面就好了.
我发现的问题是当我尝试通过HTTPS连接加载PDF文件时.出于某种原因,PDF从不在IE 8中显示(64位Vista上为64位).它在Chrome中运行良好.当使用普通HTTP时,它在IE 8中运行良好 - 仅在使用HTTPS时失败.
注意:当提到IE 8时,它是64位Vista上的32位IE 8,尽管64位IE 8具有相同的行为.
这让我觉得它是某种IE 8/HTTPS/PDF/64位操作系统问题,但我不确定.
用于IE 8的DebugBar显示请求和响应完全符合预期 - 完全没有错误.IE 8没有显示任何错误或任何内容 - 纯白屏(或我尝试加载PDF之前显示的页面).清除缓存/ cookie /等.
IE/PDF/HTTPS是否存在任何已知问题?
有关如何在asp.net应用程序中进行浏览器缓存的任何建议.我在网上找到了一些不同的方法,但不确定哪种方法最好.具体来说,我想缓存我的CSS和JS文件.它们确实会发生变化,但通常最多每月一次.
我有一个ASP.net应用程序(c#).
当用户在特定页面上时,他们会单击此页面上的链接,将其带到子页面,显示产品详细信息.
如果用户单击浏览器后退按钮,我需要将父页面刷新到其初始状态.即所有输入数据的文本框都需要为空白,任何隐藏字段重置等.基本上我需要一个CTRL-F5,当用户点击时.
禁用后退按钮不是一种选择.
我只在某些页面上需要这个.
在IE和Firefox中,我可以毫无问题地使用它.但是使用chrome,文本框仍然包含其隐藏字段的值.如果我在Chrome中点击CTRL-F5,则页面会正确重置为其初始状态.
这是我试过的代码.
<%@ OutputCache Location="None" VaryByParam="None" %>
Run Code Online (Sandbox Code Playgroud)
还有这个:
Response.Buffer = true;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetAllowResponseInBrowserHistory(false);
Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)
还有这个:
Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)
我也尝试过各种不同的组合,但没有成功.
谢谢
我正在尝试使用发送xlsx文件
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/vnd-ms.excel";
Response.TransmitFile(file.FullName);
Response.End();
Run Code Online (Sandbox Code Playgroud)
弹出IE对话框,我可以成功保存文件,然后从文件夹打开它,工作正常和花花公子.但如果我在IE对话框中单击"打开",我会收到"无法下载myFile.xlsx".我单击"重试"并打开Excel但弹出"Excel无法打开文件'myFile.xlsx',因为文件格式或文件扩展名无效..."错误.
我目前正在调试模式下从VS2010运行该站点.
有谁知道为什么它会让我保存,但不能直接打开?
编辑
Chrome只需下载它.FF尝试打开它但是给出错误The file you are trying to open, 'myFile.xlsx.xls', is in a different format than specified by the file extension...我可以选择打开它并且它成功打开,但是在只读模式下.
所以,这里有一些时髦的东西.
fileName ="myFile.xlsx"
编辑2
这是在IE 9中.我也尝试过octet-stream和application/vnd.openxmlformats-officedocument.spreadsheetml.sheet作为ContentType.
我正在使用ASP.NET MVC(最新版本).
想象一下有两页:
第1页:"输入数据">>第2页:"谢谢"
提交Page-1后,您将被重定向到Page-2.
我的目标:当你进入Page-2后,当你点击浏览器的后退按钮时,我想确保你不能回到Page-1.相反,我希望你留在Page-2(或每次按下后退按钮时被推到Page-2).
我尝试过各种各样的事情.以下只是一些简化的伪代码......
[NoBrowserCache]
public ActionResult Page1(int userId)
{
var user = GetUserFromDb(userId);
if (user.HasAlreadySubmittedPage1InThePast)
{
// forward to page 2
return RedirectToAction("Page2", routeValues: new { userId = userId });
}
var model = new Page1Model();
return View("Page1", model);
}
[NoBrowserCache]
[HttpPost]
public ActionResult Page1(Page1Model model)
{
var user = GetUserFromDb(model.UserId);
if (user.HasAlreadySubmittedPage1InThePast)
{
// forward to page 2
return RedirectToAction("Page2", routeValues: new { userId = model.UserId });
}
// Save posted data to the …Run Code Online (Sandbox Code Playgroud) 我有一个asp.net mvc应用程序,有很多隐藏的输入来保持值和格式化他们的名称,以便我可以在我提交表单后使用模型绑定.
当用户提交表单并单击后退按钮时,我偶然发现了一个奇怪的Chrome错误,我没有用IE或Firefox,我发现chrome也会保留我隐藏的输入值.
这整个块是通过javascript生成的,因此我相信chrome正在缓存这个.
function addProductRow(productId, productName) {
if (productName != "") {
//use guid to ensure that the row never repeats
var guid = $.Guid.New();
var temp = parseFloat($(".tboProductCount").val());
//need the span to workaround for chrome
var szHTML = "<tr valign=\"top\" id=\"productRow\"><td class=\"productIdCol\"><input type=\"hidden\" id=productRegsID" + temp + "\" name=\"productRegs[" + temp + "].productId\" value=\"" + productId + "\"/>"
+ "<span id=\"spanProdID" + temp + "\" name=\"spanProdID" + temp + "\" >" + productId + "</span>"
+ "</td>"
//+ …Run Code Online (Sandbox Code Playgroud) 我在DataList中有这个DropDownList.
<asp:DropDownList runat="server" ID="DDL_ProdCat" OnSelectedIndexChanged="DDL_ProdCat_SelectedIndexChanged"
Autopostback="true" DataTextField="Name" DataValueField="ID" />
Run Code Online (Sandbox Code Playgroud)
当用户在此DropDownList中进行选择时,对于某些选择,它们将重定向到单独的页面.
重定向后,用户点击浏览器返回按钮,使用DropDownList返回到此页面.
不幸的是,仍然选择将它们重定向到新页面的选择.
例
当用户通过浏览器返回按钮重新访问页面时,有没有办法将DropDownList选项重置为特定值?
注意
asp.net ×5
caching ×4
javascript ×2
64-bit ×1
asp.net-mvc ×1
c# ×1
css ×1
forms ×1
hidden-field ×1
http ×1
https ×1
iis ×1
no-cache ×1
outputcache ×1
pdf ×1
refresh ×1