0

ASP.net Core 2.2 MVC Web 应用程序

我有许多表单,我不希望浏览器在用户返回页面时缓存/​​显示任何以前输入的数据。我希望元素/表单不缓存任何信息。我不只是希望浏览器不显示以前输入的信息,出于安全原因,我希望它不被缓存。

我尝试使用以下方法装饰控制器方法:

[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]

无济于事,当我再次导航到页面/表单并开始输入时,以前输入的值继续显示为自动完成选项。

我也尝试过使用它的每一个细微差别: ASP.NET Core 中的响应缓存中间件

如今,所有浏览器如何做到这一点?

4

2 回答 2

1

听起来像是由浏览器的自动完成功能引起的:

默认情况下,浏览器会记住用户通过网站上的字段提交的信息。这使浏览器能够提供自动补全(即为用户已开始输入的字段建议可能的补全)或自动填充(即在加载时预填充某些字段)。

要为表单禁用此功能:

<form autocomplete="off">
    ... 
</form>

或禁用一个字段:

<input ... autocomplete="off">

这里有详细的解释off

“off”关键字表示控件的输入数据特别敏感(例如核武器的激活码);或者它是一个永远不会被重复使用的值(例如银行登录的一次性密钥),因此用户每次都必须明确输入数据,而不是能够依赖用户代理来为他预填值;或者文档提供了自己的自动完成机制并且不希望用户代理提供自动完成值。

有关更多详细信息,请参阅如何在 MDNw3c.org上禁用自动完成功能

希望能帮助到你。

于 2019-05-13T02:40:11.150 回答
0

您可以将 autocomplete="off" 用于 html 元素,但 chrome 会阻止对某些名称(例如“名称”、“地址”等)执行此操作。

这个话题前面已经讨论过了。Chrome 忽略 autocomplete="off"

于 2019-05-13T07:56:29.310 回答