默认情况下,浏览器会记录用户网页上提交的输入框的信息。这样浏览器便能够做到自动完成(在用户开始输入的时候给用户提供可能的内容)和自动填充(在加载的时候预先填充某些字段)功能。
这些功能可能涉及用户的隐私,因此浏览器让用户可以禁用它(自动完成或自动填充),(不幸的是)它们默认是启用的。当然,许多提交的表单信息并不见得是有用的(例如:一次性的身份验证码-我把它理解为验证码)或是某些敏感信息(例如政府分发的身份识别码和信用卡安全码-我把它理解为身份证号和信用卡安全码)。即使浏览器的自动填充出去开启状态,网站(提供商)可能也不是那么喜欢浏览器记住这些字段的值。
禁用自动填充
要禁用的表单自动填充,网页可以将 autocomplete 的属性设置为 "off":
autocomplete="off"
网站可以为整个表单设置或单独设置:
<form method="post" action="/form" autocomplete="off">
[…]
</form>
<form method="post" action="/form">
[…]
<div>
<label for="cc">信用卡:</label>
<input type="text" id="cc" name="cc" autocomplete="off">
</div>
</form>
在这里设置 autocomplete="off" 会有两种效果:
它会阻止浏览器为了以后自动完成类似的表单来自动保存表单数据,但是浏览器是不一样的。
它会阻止浏览器历史记录缓存中的表单数据。当表单数据来自缓存的时候,当用户点击返回按钮来返回的时候,用户填写的信息是可见的。
在某些情况下,即使浏览器的自动填充设置为off,浏览器依然会继续提示自动完成的值。这可能会让开发者百思不得其解。强制浏览器不自动填充的方法是为autocomplete设置一个随机的字符串,例如:
autocomplete="nope"
当这个随机的值不是 可用值的时候,浏览器就会放弃自动填充。