XMLHttpRequestでのBasic認証

XMLHttpRequestでは、Basic認証も行えるようだ。

function basic_auth(oid) {
        var req = new XMLHttpRequest();
        var myurl = 'http://www.example.jp/foobar/auth/';
        var id = document.baform.baid.value;
        var pw = document.baform.bapw.value;

        req.onreadystatechange = function () {
                if (req.readyState == 4) {
                        if (req.status == 200) {
                                location.href = myurl;
                        } else {
                                document.getElementById(oid).innerHTML =
                                                '認証できません';
                        }
                }
        }

        req.open('GET', myurl, true, id, pw);
        req.send(null);
}

認証成功の場合はいいのだが、認証が失敗の場合、IEFirefoxの挙動が違う。Firefoxでは認証が失敗すると、通常のBasic認証のダイアログが出てきてしまう。IEではこのあたりはうまくやっているみたいで、ダイアログがでないようになっている(合計3回認証してエラーとしている)。Firefoxでは認証失敗の回数は無制限のようでどうしようもないようだ。

about:config

あたりで設定できないものか検索しているがなかなか見当たらない。さて、どうしたものか。