【问题标题】:Why is the Internet Explorer Autocomplete feature disabled for all html forms on my website?为什么我网站上的所有 html 表单都禁用了 Internet Explorer 自动完成功能?
【发布时间】:2010-09-26 17:12:24
【问题描述】:

当为表单打开 Internet Explorers 自动完成时,应缓存 HTML 表单中每个字段的条目,并在用户第二次开始在表单中输入内容时将其显示为提示。

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

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

【问题讨论】:

  • 我已经相应地调整了条目...问题标题现在太长了吗?

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


【解决方案1】:

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

【讨论】:

  • no 没有使用 autocomplete="off" 标签。还有一个不同的错误可能会阻止自动完成工作,我也会发布另一个回复。如果您的表单中没有“提交”按钮,则与自动完成功能不起作用有关。
【解决方案2】:

使用 SSL 时,IE 中不使用自动完成功能(在您的标签中提到,但在您的问题中没有)。

【讨论】:

  • 哇,感谢快速的 cmets 伙计们,我实际上是在找到答案后才发布这个的,只是为了让社区可以访问它。
【解决方案3】:

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

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

“这被认为是自动完成系统的一项功能。编写了重要的代码以使其具有这种行为。”

当 session_start();发出 php 发出的默认 http 标头是无缓存标头。这是微软代表的另一句话。

如果安全页面显示“不要缓存我”,则表明数据是敏感的,因此自动完成数据本身可能是敏感的。诚然,这是一个简单的启发式方法。就个人而言,我认为这有点愚蠢,但它一直存在。 支持“autocomplete=on”来覆盖默认启发式可能是一个不错的建议。

为了重新启用自动完成功能,我必须在 php start_session() 命令之前发出这个命令:

session_cache_limiter ('private, must-revalidate');

我确信还有其他方法可以操作标头缓存控件以使自动完成功能也能正常工作。

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

【讨论】:

  • 如果您对自己的答案感到满意,请将其标记为“最佳答案”
【解决方案4】:

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 article here,MS 在这里解释了这种非常奇怪的行为。

【讨论】:

  • 我知道这个问题,是的,我所有的表单都有一个提交按钮,我会在一分钟内更新这个问题,并提供一个演示链接供所有人查看。
猜你喜欢
  • 2016-06-28
  • 2012-05-29
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 2011-08-02
  • 2019-07-26
  • 1970-01-01
相关资源
最近更新 更多