2009-10-30 4 views
10

XMLHTTPRequest를 사용하여 트위터에 대한 업데이트를 얻으려고합니다.XMLHTTPRequest로 기본 인증

var XMLReq = new XMLHttpRequest(); 
XMLReq.open("GET", "http://twitter.com/account/verify_credentials.json", false, "TestAct", "password"); 
XMLReq.send(null); 

그러나 스니퍼를 사용하면 인증 헤더가 전달되는 것을 볼 수 없습니다. 따라서 Twitter에서 401 오류 응답을받습니다.

계정과 비밀번호가 올바르게 입력되었습니다.

누구나 시도 할 수 있습니까? 아무도 내게 몇 가지 포인터를 줄 수 있습니까? 고맙습니다.

답변

1

출처 정책으로 인해 도메인에서 다른 도메인으로 XMLHttpRequest를 만들 수 없습니다. 예 : 스크립트가 twitter.com에서로드되지 않는 한 http://twitter.com/... 개의 URL을 사용할 수 없습니다. 스크립트가 http://localhost/에서로드 된 경우 AJAX 요청도 localhost로 이동해야합니다.

9

원본 출처 요청에서 사용자 자격 증명을 보내려면 withCredentials 플래그를 명시 적으로 설정해야합니다.

당신은 단지 다음과 같이 base64로 인코딩 된 문자열에서 인증 헤더, 사용자 이름과 암호를 추가해야합니다 (user credentials는 HTTP 인증을 포함한다)

+1

새로운 링크는 https://xhr.spec.whatwg.org/#the-withcredentials-attribute 및 https://xhr.spec.whatwg.org/#user-credentials – sberder

44

http://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute 참조하십시오.

XMLReq.setRequestHeader("Authorization", "Basic " + btoa("username:password")); 
+1

해야'client' 있습니다 코드 스 니펫에서 'XMLReq' (질문의 변수)가 될까요? – JaKu

+0

Actualy, 네 말이 맞아요. 이 메소드는 XMLHttpRequest.setRequestHeader (header, value)입니다. –