如何在iOS Safari上禁用后退和前进缓存?

在ASP.NET MVC中,我们在iOS上禁用后退和前进缓存时遇到问题。 出于安全原因,我们不希望从后退和前进按钮访问我们网站中的任何页面。 我们尝试过设置:

[OutputCache(NoStore = true, Duration = 1)] 

还有其他一些东西,但没有任何作用。 我们甚至无法在onunload事件中做任何事情,因为iOS也忽略了这一点。 有任何想法吗?

我们如何最终解决这个问题是在布局视图中执行此操作:

  

当它通过我们的C#代码运行时,它将javascript变量设置为true,该代码告诉我们页面是新的并且通过我们的控制器代码。 然后我们将它放在我们的全局javascript文件中,以便在页面被拉起时检查该变量:

 window.addEventListener('popstate', function () { // If fresh page is false that means it is a cached page, remove html and reload page. if (!freshPage) { $('html').remove(); window.location.reload(); } else { freshPage = false; } }); 

这是我们可以发现iOS从缓存加载页面时触发的唯一事件。 即使用户通过检查该变量来使用后退和前进按钮,这也会强制iOS始终运行我们的服务器端代码。 如果是第一页加载,则会看到新页面为true,然后将其翻转为false。 然后,如果用户回击或转发并返回此页面,此代码将运行,请参阅freshPage为false,因为它没有运行我们的C#代码,终止html,并强制重新加载页面。