为什么我的网站上的所有html表单都禁用了Internet Explorer自动完成功能?

时间:2008-12-12 20:35:24

标签: php internet-explorer ssl caching http-headers

当为Forms启用Internet Explorers AutoComplete时,HTML表单中每个字段的条目应缓存并在用户第二次开始在表单中输入内容时显示为提示。

在我的网站上,该网站上存在的任何表单都不会显示自动完成功能。但是其他网站保留并提供该内容没有问题。

我的网站使用PHP作为脚本语言,所有内容都通过SSL提供。

4 个答案:

答案 0 :(得分:9)

我已经确定问题与发出start_session()命令并且网站运行SSL时PHP发出的Cache-Headers有关。

我已经能够在微软的IE安全团队中找到一个人,他们已经确认这是IE的工作方式。这是电子邮件中的直接引用。

“这被认为是自动完成系统的一项功能。编写了重要的代码,使其表现得如此。”

当session_start();发出默认的http头,php发出的是一个无缓存头。这是Microsoft代表的另一个引用。

如果安全页面显示“请勿缓存我”,则表明数据是敏感的,因此自动填充数据本身可能很敏感。不可否认,这是一个简单的启发式方法。我个人认为这有点傻,但它永远存在。 支持“autocomplete = on”以覆盖默认启发式可能是一个很好的建议。

为了重新启用autoComplete功能,我必须在php 之前发出此命令 start_session()命令:

session_cache_limiter ('private, must-revalidate');

我确信还有其他方法可以操作标头缓存控件以允许autoComplete运行。

Here is a link to 3 examples forms I made so you can test with IE.

答案 1 :(得分:3)

dgavey - 您的表单是如何提交的?微软对这个微妙的问题并不十分清楚,但是;

YOU HAVE TO SUBMIT YOUR FORMS WITH A SUBMIT BUTTON

让它工作!

当然除非你喜欢设计自己的表单的每个网站都非常感谢,因此 你需要这个黑客来使IE表现

http://webbugtrack.blogspot.com/2007/08/bug-137-ie-autocomplete-hardly-ever.html

指向KB article here,其中MS解释了这种奇怪的行为。

答案 2 :(得分:1)

您的表单元素中是否有autocomplete="off"作为属性?

答案 3 :(得分:1)

使用SSL时,IE中未使用自动填充功能(在您的代码中提及,但在您的问题中没有提及)。