2016-10-26 2 views
0

HTTP 기본 인증이 필요한 원격 서버에서 d3.request.js를 사용하여 데이터를 다운로드하고 있습니다. 내 스크립트는 다음과 같습니다 d3.request가 무단 오류를 생성합니다.

var query="<request-url>"; 
 
d3.request(query) 
 
    .post() 
 
    .user("login-id") 
 
    .password("login-password") 
 
    .get(function(error, data) { 
 
     //scripts to process result 
 
     } 
 
    )
<script src="https://d3js.org/d3-request.v1.min.js"></script> 
 
<script src="https://d3js.org/d3.v4.min.js"></script>

그러나 위의 스크립트를 실행에, 나는 401 (무단) 오류가 발생했습니다. d3.request로 전환하기 전에 $ .ajax 요청 메소드를 사용하도록 테스트했습니다. 그리고 일하고있었습니다. 따라서 원격 서버의 상호 도메인 문제가되어서는 안됩니다. 결과는 json 객체입니다. 또한 d3.json을 사용하여 테스트했는데 실패했습니다.

이 문제에 대한 제안 사항이 있습니까?

감사합니다.

+0

문제를 해결하기위한 것이 아니기 때문에 모듈 d3 요청은 D3 v4의 축소판 전체 버전에 포함되어 있습니다. 독립 실행 형 모듈 스크립트를 포함 할 필요가 없습니다. – altocumulus

+0

감사합니다. 라이브러리를 제외합니다. 내 질문을 업데이트하기 만하면 https 서버에 연결됩니다. – chen

답변

0

원본 교차 요청입니까? 내 WAG는 this is your problem입니다. 이것을 시도하십시오 :

var query="<request-url>"; 
d3.request(query) 
    .post() 
    .user("login-id") 
    .password("login-password") 
    .on("beforesend", function(request) { request.withCredentials = true; }) 
    .get(function(error, data) { 
    //scripts to process result 
    } 
); 
+0

Ajax 요청을 사용할 때 작동하므로 크로스 도메인 문제가되어서는 안됩니다. – chen

+0

@chen, 교차 출처입니까? 아마도'$ .ajax'는'.withCredentials'를 설정하고 있습니다 ....'$ .ajax'를 어떻게 호출하고 있습니까? – Mark

+0

마크, 내가 아약스 호출에 대해 다음과 같은 스크립트를 사용하고 \t '$ 아약스 '\t ({ \t \t'입력 : "POST", \t \t'URL : QUERY_STRING, \t \t'비동기 : 거짓' \t \t'헤더 : { \t \t \t' "인증": "기본"+ btoa (사용자 이름 + ":"+ PASSWORD) \t \t'}, \t \t'성공 : 푸 nction (데이터) { \t \t '} \t \t'오류 : 함수 (에러) { \t \t \t }''}); – chen

0

다음 스크립트는 내 문제를 해결하기 위해 밝혀졌습니다. 시간에 대한

\t d3.json(query) 
 
\t \t .header("Authorization", "Basic " + btoa(USERNAME + ":" + PASSWORD)) 
 
\t \t .get(function(error, data) { 
 
\t \t \t if(error) { 
 
\t \t \t \t console.log(error); 
 
\t \t \t }else{ 
 
\t \t \t \t console.log(data); \t \t \t \t \t \t } 
 
\t \t });

감사합니다.

관련 문제