2015-06-04 2 views
0

Я использую angularjs $http, чтобы послать запрос, для базового разрешения я представил заголовки с 'Authorization': this.basicAuthorizationJavaScript - сравнение двух одинаковых строк, но они не равны

Но это не работает, я узнал, что есть проблема в this.basicAuthorization. Когда я заменить его строкой 'Basic SOME_BASE64_ENCODED_STRING'

this.basicAuthorization = 'Basic'+' '+ btoa('username'+';'+'password'); 
this.myString = 'Basic SOME_BASE64_ENCODED_STRING'; 

console.log(this.basicAuthorization + " " + typeof this.basicAuthorization + " lenght " + this.basicAuthorization.length); 
console.log(this.myString + " " + typeof this.myString + " length " + this.myString.length); 


if(this.basicAuthorization == this.myString){ 
    console.log("equal") 
} 
else{ 
    console.log('not equal'); 
    console.log(this.basicAuthorization + " " + typeof this.basicAuthorization + " lenght " + this.basicAuthorization.length); 
    console.log(this.myString + " " + typeof this.myString + " length " + this.myString.length); 

} 

И что я вижу в консоли

не равна

Basic SOME_BASE64_ENCODED_STRING строка 82

Основная строка SOME_BASE64_ENCODED_STRING 82

Почему строки не равны, и поэтому, когда я использую btoa() и мой запрос HTTP не работает, и когда я обеспечиваю его this.myString работает

+0

примечание стороны: 'lenght' написано неправильно в первом' console.log'..it должно быть 'length' –

+1

Если JS состояний, то они не равны - они не равны. Нет причин не доверять JS. – zerkms

ответ

2

Изменение:

this.basicAuthorization = 'Basic'+' '+ btoa('username'+';'+'password'); 

To:

this.basicAuthorization = 'Basic'+' '+ btoa('username'+':'+'password'); 

В базовой аутентификации имя пользователя и пароль должны быть разделены на :. See the HTTP Authentication RFC.

Смежные вопросы