2017-09-09 1 views
0

API by suredbits에서 무료 NFL 데이터를 가져 오려고합니다. 유감스럽게도 헤더에서 CORS 문제를 일으키는 Access-Control-Allow-Origin을 추가하지 않았습니다.'액세스 제어 허용 원점'클라이언트 측 수정 없음

$.getJSON("http://api.suredbits.com/nfl/v0/stats/jones/julio", function(playerData) { 
     alert(playerdata); 
} 

내가 그래서 기본적으로이 오류

No 'Access-Control-Allow-Origin' header is present on the requested resource.가 계속되면 나는 시도하고이 같은 실행 코드 ..., 클라이언트 측을 통해 자신의 실수를 해결하기 위해 자신의 방법이 무엇입니까?

+0

CORS가 리소스를 보호하기 때문에 ** 사용자 ** 서버를 통해 프록시 요청을 할 수 있습니다. 그런 다음 CORS는 문제가되지 않습니다. –

+0

그 점에 대해서는 stackoverflow에서 거의 모든 질문을 읽은 후 깨닫게되었습니다. 거기에 자습서 또는 저에게 어떻게 그 일을 가르쳐 줄 수있는 것이 있습니까? – Ethernetz

+0

은 서버 측 기술에 따라 다릅니다. –

답변

1

클라이언트 측에서 문제를 해결할 수있는 방법 실제로있다 : https://cors-anywhere.herokuapp.com/http://api.suredbits.com/nfl/v0/stats/jones/julio에 요청 URL을 변경하여 :

const proxyURL = "https://cors-anywhere.herokuapp.com/"; 
 
const requestURL = "http://api.suredbits.com/nfl/v0/stats/jones/julio"; 
 
$.getJSON(proxyURL + requestURL, function(playerData) { 
 
    console.log(playerData); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

그래, 그 정확히 아니라 클라이언트 측에서 고정이 실제로 수행중인 작업은 https://cors-anywhere.herokuapp.com/을 통한 요청을 야기하는데 이는 오픈 CORS 프록시인데 바로 Access-Control-Allow-Origin 응답 헤더가 추가되어 브라우저에서 프론트 엔드 JavaScript 코드가 응답에 액세스합니다.

그러나 답변의 코드 스 니펫에서 설명한 것처럼 데이터를 가져 오려는 API 끝점을 호스팅하는 서버를 변경할 필요가 없습니다. 대신 모든 것이 자신의 프론트 엔드 코드에 간단한 변경을 요구합니다.

물론이 공개 공개 프록시에 의존하는 것이 모든 경우에 올바른 해결책이 아닙니다. 그러나 적어도 API 공급자가 CORS를 사용하여 API를 활성화하지 않았기 때문에 요청을 직접 보내고 사용할 수있는 응답을 얻을 수있는 좋은 솔루션입니다.

No 'Access-Control-Allow-Origin' header is present on the requested resource—when trying to get data from a REST API에 대답의 "권한 없음 - 제어 - 허용 - 원산지 헤더를"문제 섹션을 주위에 얻을 수있는 CORS 프록시를 사용하는 방법

몇 자세한 내용이 있습니다.

+0

'클라이언트 쪽에서 정확히 고치고있는 것은 아닙니다.'라는 클라이언트 쪽 픽스가 아닙니다. – pvg