相关疑难解决方法(0)

为什么在HTTP响应中应该使用no-cache和no-store?

我被告知要防止用户信息泄露,只有"无缓存"的响应是不够的."无商店"也是必要的.

Cache-Control: no-cache, no-store
Run Code Online (Sandbox Code Playgroud)

在阅读本规范http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html后,我仍然不太清楚为什么.

我目前的理解是它只适用于中间缓存服务器.即使"无缓存"作为响应,中间缓存服务器仍然可以将内容保存到非易失性存储.中间缓存服务器将决定是否使用保存的内容进行后续请求.但是,如果响应中存在"no-store",则不应该在中间缓存服务器上存储内容.所以,它更安全.

还有其他原因我们需要"无缓存"和"无商店"吗?

caching http no-cache

115
推荐指数
8
解决办法
15万
查看次数

无法在IE 8中显示来自HTTPS的PDF(在64位Vista上)

我有一个本土的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是否存在任何已知问题?

pdf https 64-bit internet-explorer internet-explorer-8

43
推荐指数
3
解决办法
7万
查看次数

ASP.NET应用程序中的浏览器缓存

有关如何在asp.net应用程序中进行浏览器缓存的任何建议.我在网上找到了一些不同的方法,但不确定哪种方法最好.具体来说,我想缓存我的CSS和JS文件.它们确实会发生变化,但通常最多每月一次.

javascript css asp.net iis caching

13
推荐指数
1
解决办法
9520
查看次数

Chrome返回按钮页面刷新 - ASP.net

我有一个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)

我也尝试过各种不同的组合,但没有成功.

谢谢

asp.net caching outputcache google-chrome refresh

9
推荐指数
2
解决办法
1万
查看次数

Repsonse.Transmitfile(); 能够节省但无法打开

我正在尝试使用发送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-streamapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet作为ContentType.

c# asp.net response.transmitfile

8
推荐指数
1
解决办法
5978
查看次数

如何防止用户返回上一页?

我正在使用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 asp.net-mvc

7
推荐指数
1
解决办法
3813
查看次数

如何防止谷歌浏览器缓存我的输入,尤其是当用户点击后隐藏的输入?

我有一个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)

javascript forms caching google-chrome hidden-field

6
推荐指数
1
解决办法
4626
查看次数

ASP.NET - DropDownList在Browser-Back-Button上包含错误的值

我在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返回到此页面.

不幸的是,仍然选择将它们重定向到新页面的选择.

  • DDL包含A,B - 初始选择值:A
  • 用户选择B - Postback将它们重定向到另一个页面
  • 用户在浏览器上"返回"
  • 页面现在显示"B"被选中,而页面状态表明仍应选择"A".该页面永远不会处于"B"状态,因为"B"被标记为将用户重定向到该另一页面.

当用户通过浏览器返回按钮重新访问页面时,有没有办法将DropDownList选项重置为特定值?

注意

  • 我在这里被迫使用DDL,因为常见的情况是不会发生重定向.我知道它通常不是将用户链接到其他页面的最佳选择.
  • 不幸的是,出于性能原因,我无法关闭整个页面的浏览器缓存

asp.net drop-down-menu

5
推荐指数
1
解决办法
2109
查看次数