【问题标题】:Detect IE setting: check for newer versions of stored pages "never"检测 IE 设置:检查存储页面的较新版本“从不”
【发布时间】:2009-10-06 15:12:18
【问题描述】:

我知道由于安全原因,没有办法直接询问用户的 IE 设置,但是有没有办法通过其他机制得出这个答案?如果设置“检查存储页面的较新版本”设置为“从不”,我想阻止用户使用我的网站。有什么建议么?

有没有一种方法可以使用 javascript 对此进行测试?我正在尝试完成的一个示例是:虽然无法检查 IE 设置以查看您是否正在运行弹出窗口阻止程序,但这是一种通过 javascript “测试”弹出窗口阻止程序的方法。我正在寻找类似的东西,但对于缓存设置,而不是弹出窗口阻止程序。

【问题讨论】:

  • 如果您的页面使用 Cache-Control 或 Expires 标头正确指定了新鲜度生命周期,则相关设置将被完全忽略。

标签: asp.net javascript security internet-explorer caching


【解决方案1】:

向查询字符串添加一些以前不太可能使用过的内容(日期字符串、随机数)。

这将使 IE 6 再次请求该页面,就 IE 而言,它是另一个页面。

因此,如果您有 http://somepage.com/dontcachethis.html,则可以将其替换为 http://somepage.com/dontcachethis.html?please=23143425 之类的内容,其中您为 please 分配一个随机数。

【讨论】:

  • 我明白这一点,但有人可以为旧网址添加书签。我正在寻找一种方法来测试这个 IE 设置。
【解决方案2】:

将以下内容添加到您的网页:

meta http-equiv="Pragma" content="no-cache"
meta http-equiv="Expires" content="0"

这会强制用户的浏览器每次都重新加载页面,而不管浏览器的缓存设置如何。

【讨论】:

    【解决方案3】:

    我还没有实现,但这是我的计划:

    • 在某个 HTML 元素的属性上的页面上写出一个日期(这应该写在服务器端...用 javascript 写会破坏目的)
    • 使用javascript,加载日期。如果超过一定时间,我可以假设他们没有加载页面的新副本。如果是这种情况,请继续...

    如果我检测到他们有旧版本的网页,我可以做几件事:

    1. 我可以警告他们这个问题。我可以向他们展示他们需要更改的设置。
    2. 我可以将它们重定向到同一个页面,但在查询字符串中添加一些内容,使其看起来像是浏览器的不同页面。如果我这样做,我会在我的 javascript 中添加一些了解此潜在重定向循环的内容。

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 2016-10-02
      • 2012-02-03
      • 2011-09-11
      • 2021-05-21
      • 1970-01-01
      • 2011-12-24
      • 2011-05-31
      • 1970-01-01
      相关资源
      最近更新 更多