2016-08-15 2 views
0

로컬 서버 포트 8000에서 API를 실행하고 있습니다. 즉, 127.0.0.1 : 메서드가 get 일 때 8000/api은 JSON 데이터를 반환합니다. 내가 아는 한 가지 관점에서 아약스 요청을하면 정확한 반환 데이터를 얻을 수 있기 때문에 이것을 알 수 있습니다.출처 로컬 서버의 2 개 포트에서 2 개의 응용 프로그램을 실행할 때 Access Control-Allow-Origin이 출처 [URL]을 허용하지 않습니다.

이제이 API를 제 3 자 웹 사이트에서도 사용할 수 있도록 노력하고 있습니다. 그래서 다른 응용 프로그램을 구축하고, 127.0.0.1:8080에 다음 JS 코드 실행됩니다 것, 즉 포트 8080에 달렸다 :

(function() { 
    $.ajax({ 
     url: 'http://127.0.0.1:8000/api/', 
     type: 'GET', 
     dataType: 'json', 
     headers: { 
      'Access-Control-Allow-Origin': '*' 
     }, 
     success: function(json) { 
      console.log('Success'); 
     }, 
     error: function(req, status, err) { 
      console.log(req + status + err); 
     } 
    }); 
})(); 

참고 : 나는 API가 실행이 코드를 실행 그러나 콘솔에서이 오류가 발생합니다.

[Error] XMLHttpRequest cannot load http://127.0.0.1:8000/api/. Origin http://127.0.0.1:8080 is not allowed by Access-Control-Allow-Origin. 

무슨 일입니까? 이 문제를 어떻게 해결하고 로컬 서버에서 API를 테스트 할 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다!

답변

1

CORS 문제가 있습니다. 즉, 귀하의 브라우저가 귀하를 외국 자원으로부터 보호하고 있음을 의미합니다. 사용하는 JS 프레임 워크에 따라 이에 대한 해결 방법이 있습니다. 가장 일반적인 것은 jsonp로, 도메인 간 요청을 만들 수 있습니다 (https://www.sitepoint.com/jsonp-examples/ 참조)

+0

감사합니다. CORS 헤더를 추가하면 문제가 해결되었습니다. –

+0

Tahmid Khan, 어떤 헤더를 사용하여 문제를 해결했는지 언급 해 주시겠습니까? – c0m3t