2014-12-21 2 views
1

foursquare OAuth URL에 대한 GET 호출을하고 있습니다. 브라우저 콘솔은 여기에 다음과 같은 오류를Foursquare는 'No access control allow origin'헤더 오류를 표시합니다.

XMLHttpRequest cannot load https://foursquare.com/oauth2/authenticate?client_id=DF4I1TGNVHAM40PDLOHZQZ…onse_type=code&redirect_uri=http://localhost:9000/auth/foursquare/callback. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. 

를 인쇄 호출하는 코드 조각입니다 :

$http.get(url).success(function(data,status,headers,config){ 
}); 

하지만이 URL에 단추를 연결하는 경우, 브라우저는 인증 페이지에 저를합니다.

어떤 차이가 있습니까? 왜 URL이 버튼에 링크되어 있고 그 URL에 대한 GET 호출이있을 때 작동하지 않는 이유는 무엇입니까?

+0

CORS에 대해 읽으십시오. 이 경우 AJAX를 사용할 수 없습니다. – dfsq

답변

0

서버가 CORS (Access-Control-Allow-Origin) 헤더를 제공하지 않는 한 Ajax는 한 도메인에서 다른 도메인으로 요청할 수 없습니다. 도메인 간 링크가 허용됩니다.

Mozilla에는 허용되는 것과 허용되지 않는 것에 대한 좋은 정보가 있습니다. https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Cross-origin_network_access

  • 크로스 원본 쓰기가 일반적으로 허용됩니다. 링크, 리디렉션 및 양식 합계가 그 예입니다. 드물게 사용되는 특정 HTTP 요청에는 프리 플라이트가 필요합니다.
  • 일반적으로 이미지, 스크립트와 같은 교차 원산지 삽입이 허용됩니다.
  • 아약스 호출과 같은 교차 원고 읽기는 일반적으로 허용되지 않습니다.
+0

웨인에게 감사드립니다. 귀하의 답변과 귀하가 제공 한 링크가 제 문제를 이해하는 데 도움이되었습니다. – bala

관련 문제