Почему функция автозаполнения Internet Explorer отключена для всех HTML-форм на моем веб-сайте?

Когда автозаполнение Internet Explorer включено для форм, записи для каждого поля в HTML-форме должны кэшироваться и отображаться как приглашение, когда пользователь начинает вводить содержимое в форму во второй раз.

На моем веб-сайте функция автозаполнения никогда не отображается для любых форм, существующих на этом сайте. Но все же другие сайты сохраняют и доставляют этот контент без проблем.

Мой сайт использует PHP в качестве языка сценариев, и весь контент доставляется через SSL.

12.12.2008 20:35:23
Я изменил запись соответствующим образом ... название вопроса теперь слишком длинное?
dgavey 12.12.2008 20:54:17
4 ОТВЕТА

У вас есть autocomplete="off"как атрибут в ваших элементах формы?

1
12.12.2008 20:38:09
нет тег autocomplete = "off" не использовался. Существует также другая ошибка, которая может помешать работе автозаполнения, о которой я также опубликую еще один ответ. Это связано с тем, что автозаполнение не работает, если в вашей форме нет кнопки «отправить».
dgavey 12.12.2008 20:48:53

Автозаполнение не используется в IE при использовании SSL (что упоминается в ваших тегах, но не в вашем вопросе).

1
12.12.2008 20:43:34
Вау, спасибо за быстрые комментарии, ребята, я действительно опубликовал это после того, как нашел ответ, просто чтобы сообщество имело к нему доступ.
dgavey 12.12.2008 20:47:22

Я определил, что проблема связана с заголовками Cache-Headers, которые PHP отправляет, когда запускается команда start_session (), а сайт работает по протоколу SSL.

Мне удалось завладеть человеком из команды безопасности IE в Microsoft, и они подтвердили, что именно так должен работать IE. Вот прямая цитата из письма.

«Это считается особенностью системы автозаполнения. Значительный код был написан, чтобы заставить его вести себя таким образом».

Когда session_start (); По умолчанию HTTP-заголовки отправляются php-заголовками без кэширования. Вот еще одна цитата из представителя Microsoft.

Если на защищенной странице написано «Не кэшируйте меня», это означает, что данные являются конфиденциальными, и, следовательно, сами данные автозаполнения, вероятно, являются конфиденциальными. По общему признанию, это простая эвристика. Лично я думаю, что это немного глупо, но это было там навсегда. Вероятно, это хорошее предложение для поддержки "autocomplete = on" для переопределения эвристики по умолчанию.

Чтобы снова включить функцию автозаполнения, я должен был выполнить эту команду в php перед командой start_session ():

session_cache_limiter ('private, must-revalidate');

Я уверен, что есть другие способы манипулирования элементами управления кэшем заголовка, чтобы позволить автозаполнению функционировать также.

Вот ссылка на 3 примера формы, которые я сделал, чтобы вы могли протестировать с IE.

9
12.12.2008 22:02:15
если вы удовлетворены своим собственным ответом, отметьте его как «Лучший ответ»
medopal 14.03.2010 13:42:55

dgavey - как отправляются ваши формы? Microsoft не слишком понимает эту тонкую проблему, но;

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 здесь , где MS объясняет это действительно странное поведение.

3
12.12.2008 21:21:36
Я знал об этой проблеме, и да, есть кнопка отправки всех моих форм, я обновлю этот вопрос через минуту со ссылкой на демо-версию для всеобщего обозрения.
dgavey 12.12.2008 21:49:21