Jquery .ajax fails when basic auth username has @ symbol (ios / cordova)

后端 未结 3 546
無奈伤痛
無奈伤痛 2021-01-02 16:32

I have a phonegap app w/ jQuery 1.9.1 Worked great as long as the username doesn\'t have \'@\' symbol in it (like in email addresses). It only fails on iOS.

I suspec

3条回答
  •  庸人自扰
    2021-01-02 17:26

    When base64encoded text is UNencoded on the other end, it still looks like (as you said), user@domain:password@blah.domain.com Try having a function like this:

    var getAuthToken = function (user, pass) {
        var token = "";
        if (user) {
            token = token + encodeURIComponent(user);
        }
        if (pass) {
            token = token + ":" + encodeURIComponent(pass);
        }
        token = $.base64.encode(token);
        return "Basic " + token;
    };
    

    Then just change your code slightly:

    xhr.setRequestHeader("Authorization", getAuthToken(this.username, this.password));
    

提交回复
热议问题