今新宿で開発中の案件で、とある事情でWebサーバから外部のSMTPサーバ経由でメールを送信できる機能を実装することになったのだが、今時なのでSMTP AUTHで認証を行わなければならない。
ところがこれまた特殊事情で「SMTPサーバのID・パスワードはWebサーバ側には保存しないで、ユーザにその都度入力させる」ことになり、さすがにユーザの利便性を考えて「ブラウザ側のオートコンプリート機能でアカウント情報を保存できるようにしよう」という方針が固まったのだが、いざ開発にかかると「どういう条件でオートコンプリート機能が効く(=ブラウザにID・パスワードが保存される)のか」という情報がなかなか見つからない。
ネット界隈にはいろいろガセネタも多いので、この際「Internet ExplorerでオートコンプリートでID・パスワードが保存される条件」についてまとめてみた。
#今回の案件はターゲットブラウザがIEのみなので。他のブラウザは知らん。
○条件
基本的には以下の2つの条件を満たせば、ブラウザ側にID・パスワードが保存される。
・対象となるformの中に、<input type="text">と<input type="password">のテキストボックスが1つずつ存在する。
・ユーザが<input type="submit">もしくは<input type="image">のボタンを押すことでformがsubmitされる。ただしその際onClick等のイベントハンドラでfalseを返してはいけない。
基本的にJavaScriptでformをsubmitした場合は×。Ajaxだと<input type="button">などを使って、onClickイベントからJavaScriptでformをsubmitしたりすることがよくあるけど、その場合はオートコンプリートが効かない。
あと<input type="text">が2つ以上あるようなformも×。
詳しくは
・
Internet Explorer のオートコンプリートの動作について(マイクロソフト)
・
autocomplete ができなくなる理由
あたりを読むこと。
○ガセネタ
以下の情報は全てガセネタ(IE8で検証済み)。
・そもそもSSLではオートコンプリートが効かない
・HTTPヘッダで「Pragma: no-cache」や「Cache-Control: no-cache」が指定されているとオートコンプリートが効かない
他にもガセネタはあると思うが、とりあえず気になったのはこの2つ。後者はひょっとしたらIE6ではありえない話でもないが(IE6はSSL接続時のバグが結構あるので)、前者はIE6の時もふつーにオートコンプリートが使えてたし。