2017-09-20 3 views
1

나는이 코드를 사용하여 API 요청을 해요 :이 HTTP 요청이 실패하는 이유는 무엇입니까?

function httpGet(url){ 
var request = new XMLHttpRequest(); 
request.onreadystatechange = function() { 
    console.log(this.status) 
    if (this.readyState == 4 && this.status == 200) { 
     console.log("Got names") 
     getNamesFromJSONArray(request.responseText); 
    }; 
}; 
request.open("GET", url, true); 
request.setRequestHeader("Authorization", "Basic (API key goes here)"); 
request.setRequestHeader("Accept-Encoding", "gzip"); 
request.send(); 
} 

그것은 다른 일 단지 일을하지만 지금은 말해, 실패

자원을로드하지 못했습니다 : 프리 플라이트 응답은 성공하지

XMLHttpRequest를 LOA 수 없습니다 d https://api.insight.ly/v2.1/contacts. 프리 플라이트 응답이 성공하지 못했습니다.

또한 "Got names"는 인쇄되지 않습니다.

왜이 코드는 다른 날에 작동했을 때 중단됩니까? API 끝 또는 내 문제입니까?

업데이트! api 웹 사이트에서 this을 발견했습니다. 이것을 구현하는 가장 간단한 방법은 무엇입니까? 나는 현재 백엔드가 없으며이 외에도 아무것도 필요하지 않습니다. 클라이언트가 읽을 수있는 Javascript로 내 API를 원하지 않기 때문에 문제가 발생한 것으로 알고 있습니다. 사용자의 이메일과 비밀번호로 다른 방법으로 API에 로그인 할 수 있습니까?

+0

나에게 CORS 문제와 같은 소리가납니다. 아마도 올바른 액세스 헤더를 보내야 할 것입니다. –

+0

@ObsidianAge 그런데 왜 며칠 전에 작동 했습니까? 여기에 무슨 일이 일어나고 있는지에 대한 설명은 –

+0

이 참조 https://stackoverflow.com/a/45533146/441757 또는 https://stackoverflow.com/questions/45586064/receive-oauth2-token-from-xhr-request/45586285# 45586285 또는 https://stackoverflow.com/questions/45210184/why-is-my-drupal-8-cors-setup-not-working/45312903#45312903 (중복으로 표시된 질문에는 불행히도 답변이 없습니다. 내가 볼 수있는 한 실제로 이런 종류의 경우에 대한 모든 행동을 설명합니다.) 요지는 다음과 같습니다. https : // api.insight.ly/v2.1/contacts 엔드 포인트는 OPTIONS 요청에 대한 권한 부여가 필요합니다. 그렇게해서는 안됩니다. – sideshowbarker

답변

0

API가 CORS를 (올바르게) 처리 할 수 ​​있어야합니다. 구체적으로 질문은 프리 플라이트입니다.

실제 CORS 호출하기 전에, 그것은 확실히 그것을 확인하는 것이 안전하기 위해, 옵션 방법을 사용하여 동일한 전화를 할 것입니다. 서버는이를 위해 특정 헤더를 리턴 할 것으로 예상됩니다.

그렇습니다. 이것은 API 측에 있습니다.

HTTP access control (CORS)

+0

답변 해 주셔서 감사합니다! 나는 이것을 들여다가 내 질문에 대한 업데이트를 올렸다. 어떤 충고? –

+0

나에게 보이면, 그들은 이미 당신의 질문에 대답했다. 아니요, CORS (API를 직접 호출 할 수 없음)를 사용할 수없고 이미 프록시를 작성하는 옵션을 제공합니다. –