当 Internet Explorers AutoComplete 为表单打开时,HTML 表单中每个字段的条目应被缓存并在用户第二次开始向表单中输入内容时显示为提示。
在我的网站上,该网站上存在的任何表单都不会显示自动完成功能。但是其他网站可以毫无问题地保留和交付该内容。
我的网站使用 PHP 作为脚本语言,所有内容都通过 SSL 传递。
当 Internet Explorers AutoComplete 为表单打开时,HTML 表单中每个字段的条目应被缓存并在用户第二次开始向表单中输入内容时显示为提示。
在我的网站上,该网站上存在的任何表单都不会显示自动完成功能。但是其他网站可以毫无问题地保留和交付该内容。
我的网站使用 PHP 作为脚本语言,所有内容都通过 SSL 传递。
我已经确定问题与发出 start_session() 命令并且站点正在运行 SSL 时 PHP 发出的 Cache-Headers 有关。
我已经能够联系到微软 IE 安全团队的一个人,他们已经确认这就是 IE 的工作方式。这是电子邮件中的直接报价。
“这被认为是自动完成系统的一项功能。编写了重要的代码以使其以这种方式运行。”
当 session_start(); 发出 php 发出的默认 http 标头是无缓存标头。这是微软代表的另一句话。
如果安全页面显示“不要缓存我”,则表明数据是敏感的,因此自动完成数据本身可能是敏感的。诚然,这是一个简单的启发式方法。就个人而言,我认为这有点愚蠢,但它一直存在。支持“autocomplete=on”来覆盖默认启发式方法可能是一个好建议。
为了重新启用自动完成功能,我必须在start_session() 命令之前在 php 中发出此命令:
session_cache_limiter ('private, must-revalidate');
我确信还有其他方法可以操作标头缓存控件以允许 autoComplete 也能正常工作。
dgavey - 您的表格是如何提交的?微软对这个微妙的问题并不太清楚,但是;
YOU HAVE TO SUBMIT YOUR FORMS WITH A SUBMIT BUTTON
为此工作!
当然,除非您像每个喜欢设计自己的表单的网站一样非常感谢您,因此您需要这个 hack 来使 IE 正常运行。
http://webbugtrack.blogspot.com/2007/08/bug-137-ie-autocomplete-hardly-ever.html
这指向了KB 文章,MS 解释了这种非常奇怪的行为。
您autocomplete="off"
的表单元素中有属性吗?
使用 SSL 时,IE 中不使用自动完成功能(在您的标签中提到,但在您的问题中没有)。