【问题标题】:Reset the Html Form after form submission and prevent user to come back and see the submitted data表单提交后重置 Html 表单,防止用户返回查看提交的数据
【发布时间】:2012-01-30 15:00:57
【问题描述】:

当我在一个 HTML 页面上进行 HTTP POST 提交时,它会重定向到另一个页面。

在重定向页面上,用户可以通过点击浏览器的后退按钮返回表单页面并再次查看提交的值。这不是什么大问题,但考虑一下这种情况:

用户去公共网吧用信用卡买东西 卡片。然后离开网吧忘记关闭浏览器。 下一位用户来到那张桌子并按下返回按钮并砰!

对互联网一无所知的用户可能会为此行为责备公司。

我想做的是在表单提交后重置 HTML 表单并防止用户回来查看提交的数据。

我可以使用一个简单的 JavaScript 代码来做到这一点。例如,如下所示:

<script>
    $("input[type='text']").val(null);
</script>

但是,可以禁用 JavaScript。

我正在 ASP.NET MVC 上开发此应用程序,但我认为没有任何方法可以在服务器端解决此问题。

有什么想法吗?

【问题讨论】:

    标签: javascript jquery html asp.net-mvc http


    【解决方案1】:

    如果情况与您的示例一样,我的建议是永远不要自己处理信用卡信息。有各种支付服务(paypal 和其他)具有安全处理数据的小工具和 API。

    另外,如果您担心处理敏感的用户数据,首先您应该始终使用 SSL (https)。其次,您可以使用操作方法上的 OutputCacheAttribute 告诉浏览器忘记原始表单数据:

    [OutputCache(NoStore = true, Location = OutputCacheLocation.None)]
    public ActionResult SomeAction() { }
    

    不要为此使用 javascript。

    【讨论】:

    • 我需要自己处理信用卡数据。我在那里别无选择。但是,缓存控制提示很有用。我认为 JavaScript 也是如此。
    • no-cache 可能是您的最佳选择。
    • 您确定可以保证用户信用卡信息的安全吗?这不是一件容易的事!而且我永远不会与一个自己处理我的信用卡信息的网站做生意......
    • 好吧,Cache-Control:no-cache, no-store 在 chrome 上没用。
    • 好吧,让我告诉你情况:我们在这里与一家土耳其银行合作,他们有一个接受请求的 REST 服务。我没有在我的服务器上存储信用卡信息,我只是传递给银行并获得身份验证我不确定您所说的“我永远不会与处理我的信用的网站做生意卡信息本身...”。我这里还有其他选择吗?
    【解决方案2】:

    即使您清除了表单字段,它们的值也会作为自动完成条目提供。您可以通过关闭自动完成来停止此操作:

    <form autocomplete="off" ...>
    

    据我所知,Internet Explorer 和 Firefox for HTML4 都支持它,并且在 HTML5 规范中。

    【讨论】:

    • 哇!我已经错过了这么久知道这一点! :) 谢谢!
    • 天哪。我希望这些知识不会传播得太快。我不想不得不再次开始逐个输入我的个人详细信息...
    • @MarjanVenema - 开发人员应该了解这些属性。我们都长大了,可以决定什么时候使用它们,什么时候不合适。例如,我不希望在用于输入 Facebook 状态的字段上自动完成,但我希望在询问我姓名的字段上自动完成。
    • @Sohnee:我同意你的观点,只是我看到这种知识被滥用了一点。想一想:禁用后退按钮,防止右键单击链接。总会有合适的情况,但不幸的是,也有很多情况下,出于错误的原因使用了可能的方法。
    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 2011-12-06
    • 2018-10-05
    • 2018-02-21
    • 2011-05-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多