2017-01-09 1 views
0

this endpoint에서 결과를 가져 오려고합니다. GET을 사용하면 CORS 오류가 발생하므로 jsonp를 사용하고 있습니다.

결과는

Refused to execute script from 'https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0' 
because its MIME type ('application/json') is not executable, 
and strict MIME type checking is enabled. 

내 코드는이 오류가 발생하는 이유는 당신이 callback 매개 변수를 지정 심지어, 엔드 포인트 있기 때문이다

var API_BASE_URL = 'https://api.airbnb.com/v2/'; 

function getListing(id) { 
    var url = API_BASE_URL + 'listings/' + id + '?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3'; 

    var trusted = $sce.trustAsResourceUrl(url); 

    return $http.jsonp(trusted, { 
    jsonpCallbackParam: 'callback', 
    headers: { 
     'Accept': 'application/javascript' 
    } 
    }); 
}; 

답변

0

입니다이며, 여전히 JSON하는 아마 수단을 반환 끝점에서 JSONP도 지원하지 않습니다.

는 여기를 참조하십시오 : https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0

이 서버가이 경우에 반환 할 필요가 무엇인가하는 JSON하지 JSONP 콘텐츠입니다.

기본적으로 $http.jsonp이 구현되는 방식은 제공되는 URL을 가리키는 src 속성으로 DOM에 <script> 요소를 삽입한다는 것입니다. 그러나 서버가 JSON을 콜백 함수 (JSONP)로 래핑하지 않기 때문에이 스크립트를 유효한 스크립트로 포함 할 수 없으므로 결과 오류가 발생합니다.

CORS 및 JSONP는 옵션이 아니기 때문에 도메인과 원격 도메인 간의 프록시 역할을하는 서버 측 스크립트를 도메인에 작성할 필요가 있습니다. 그런 다음 스크립트에 AJAX 요청을 보냅니다.

+0

도메인을 통해 요청을 보내면 CORS 오류가 표시되지 않습니까? –

+0

아니요, 물론 아닙니다. CORS는 샌드 박스 브라우저에 존재하는 개념이며 자바 스크립트에 대한 제한 사항입니다. 서버에서 PHP와 같은 서버 측 언어를 사용하여 원하는 모든 도메인에 대한 요청을 실행할 수 있습니다. –

관련 문제