gpt4 book ai didi

ios - 如何在 iOS Safari 上禁用前后缓存?

转载 作者:可可西里 更新时间:2023-11-01 05:41:08 28 4
gpt4 key购买 nike

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

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

还有一些其他的东西,但没有任何效果。我们甚至不能在 onunload 事件中做任何事情,因为 iOS 也会忽略它。有什么想法吗?

最佳答案

我们最终解决这个问题的方法是在布局 View 中这样做:

<script type="text/javascript">
@Html.Raw("var freshPage = true;")
</script>

当它运行我们的 C# 代码时,它将一个 javascript 变量设置为 true,告诉我们页面是新鲜的,并通过了我们的 Controller 代码。然后我们将它放在我们的全局 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,并强制重新加载页面。

关于ios - 如何在 iOS Safari 上禁用前后缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23137588/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com