iOS: l'Authentification à l'aide de XMLHttpRequest - Manipulation réponse 401

Je suis en train d'écrire une application iOS à l'aide de PhoneGap (aka Cordoue), j'ai un simple code html de la page de login qui connecte l'utilisateur à l'aide d'un XMLHttpRequest avec l'authentification de base sur le protocole SSL. Tout fonctionne à merveille lorsque vous entrez votre nom d'utilisateur et le mot de passe correctement. Toutefois, si vous entrez le mauvais nom d'utilisateur/mot de passe, aucun de mes rappels sont jamais appelés.

Si vous exécutez le même code sur Chrome par exemple, avec le mauvais nom d'utilisateur/mot de passe, chrome se comporte de la même manière, sauf qu'il apparaît une boîte de dialogue de l'authentification. Cliquer sur annuler sur le chrome de la boîte de dialogue renvoie le contrôle de mon code javascript. Malheureusement, sur iOS, la UIWebView l'habitude même apparaître un auth dialogue, il se bloque. J'ai besoin d'un moyen pour indiquer à l'utilisateur qu'ils sont entrés dans le mauvais nom d'utilisateur ou mot de passe afin qu'ils puissent recommencer.

La chose la plus proche à une réponse que j'ai pu trouver ce http://www.freelock.com/2008/06/technical-note-http-auth-with-ajax mais en changeant le statut de la réponse du serveur ne semble pas être la bonne chose à faire.

Ici est ce que ma demande à quoi ressemble le code, mais quand un mauvais nom d'utilisateur ou mot de passe est envoyé, il n'atteint jamais mon rappel onload (en fait la onreadystatechange de rappel ne reçoit appelé une fois et c'est pour readyState 1, aka OUVERT).

var req = new XMLHttpRequest();
req.onload = function(ev) {
    if (req.status == 401) {
        alert("Invalid Username/Password");
        document.getElementById('password').focus();
    } else if (req.status == 200) {
        window.location.href = some_secure_site;
    } else {
        //edit //
        alert("Some other status");
    }
}
req.onerror = function (ev) { alert('Error'); };
req.ontimeout = function(ev) { alert('Timeout'); };
req.open('GET', uri, true, userValue, passValue);
req.withCredentials = true;
req.send();