2014-06-14 5 views
6

Pebble JS Framework의 올바른 자격증 명을 사용하는 XMLHttpRequest이 기본 인증에 실패하지만 iOS에서 작동하는 이유는 무엇입니까? 의 라인을 따라 정확히 동일한 코드XMLHttpRequest가 기본 인증에 실패 함

:

var req = new XMLHttpRequest(); 
req.open(method, url, true, user, pass); 
req.send(data); 
req.onreadystatechange = function() { ... } 

안드로이드 조약돌 응용 프로그램에서 401을 반환하지만, 아이폰 OS에서 제대로 인증합니다.

+0

본 적이 있습니까? http://stackoverflow.com/questions/11025213/ios-authentication-using-xmlhttprequest-handling-401-repons – JakeGould

+1

Downvoters unite :) 또는 적어도 'splain yourself. 그것은 "당신이 시도한 것"입니까? 또는 "노력/코드 표시"? 나는 기꺼이 들어 줄 것이다. –

+0

@JakeGouldG 불행히도 그것은 나에게 적용되지 않습니다. Pebble 앱의 JS 부분이 이미 iOS에서 올바르게 작동합니다. 그리고 안드로이드 Pebble JS 프레임 워크에서 항상 실패합니다 - 정확한 자격증을 가지고 있더라도 –

답변

17

안드로이드에서 저에게 효과가있는 해결책을 찾았습니다.

이유가 있지만, 직접 인증 요청을 몰라 :

req.open(method, fullurl, true, user, pass); 
    req.send(data); 

나를 위해 작동하지 않았다 - 항상 내가 헤더를 통해 기본 인증을 설정하려고 그래서 대신 401을 반환

req.open(method, fullurl, true); 
    req.setRequestHeader("Authorization", "Basic " + Base64.encode(user + ":" + pass)); 
    req.send(data); 

(Base64는 여기에서 가져온 것입니다 : https://stackoverflow.com/a/246813/961695) - 작동했습니다! 아마도 안드로이드의 XmlHttpRequest 구현에 버그가 있습니다.

+1

Google 문제 : https://code.google.com/p/chromium/issues/detail?id=128323 – StarQuake

+4

btoa를 사용해 보시지 않겠습니까? 자바 스크립트 순수 .. ¬.¬ 시도'req.setRequestHeader ("Authorization", "Basic"+ btoa (user + ":"+ pass)); ' – KingRider

+0

btoa는 ASCII 전용입니다. – diachedelic

관련 문제