2013-09-08 2 views
0

나는 Expedia API을 사용하여 호텔 검색 프론트 엔드를 가지고 놀고 있습니다. localhost : 3000에서 실행되는 node.js 서버와 위치 및 날짜를 ​​입력하기위한 간단한 백본보기를 설정했습니다. 익스 피디아에 요청을 제출Expedia API 교차 소스 요청

그러나 때, 난 항상 얻을

XMLHttpRequest cannot load ... http://localhost:3000 is not allowed by Access-Control-Allow-Origin. 
다음

잘 작동합니다 내 제출 코드입니다 : 나는 경우 볼 수있는 JSFiddle에서이 코드를

$.support.cors = true; // not really done at every request 
var from = this.$el.find("input[name=date-from_submit]").val(), 
    to = this.$el.find("input[name=date-to_submit]").val(), 
    where = this.ui.place.val(); 

$.ajax({ 
    "url": "http://api.ean.com/ean-services/rs/hotel/v3/list?" + 
     "destinationString=" + where + 
     "&cid=55505" + //test CID 
     "&minorRev=20" + 
     "&arrivalDate=" + from + 
     "&departureDate=" + to + 
     "&room1=2" + 
     "&apiKey=<apikey>", 
    "dataType": "json", 
    "accept": "application/json" 
}).always(function(a, b, c) { 
    console.debug(a, b, c); 
}); 

시도 그들은 단지 localhost을 금지하지만 효력은 없습니다. 동일 원점 정책 오류입니다. 이제

궁금하네요 : 전혀

  1. 합니까 피디아 지원 크로스 원산지 요청을?
  2. 어쩌면 나는 그들의 웹 사이트 어딘가에서 나의 선택의 근원에 들어가기로되어 있나? 나는 아무것도 찾지 못했다.
  3. 1에 대한 대답이 "아니오"이면 개발자는 API를 사용하여 제품을 어떻게 작성해야합니까?
  4. 나는 바보일까요?

미리 감사드립니다.

+2

는 익스 피디아의 API 문서는 CORS 지원에 대한 언급을하지 않으며, 그래서 나는 그들이 CORS를 지원하지 않습니다 있으리라 믿고있어. 지원 가이드에서 추가 안내를 요청할 수도 있습니다. https://support.ean.com/home 개발자가 제품을 작성하는 방법에 대한 대답으로 API를 사용할 수 있으며 순수한 자바 스크립트에서는 사용할 수 없습니다 . – monsur

+0

설명해 주셔서 감사합니다. 요청은 노드 서버에서 수행 할 때 작동하므로 일부 서버 논리도 포함시켜야합니다. – prayerslayer

+0

@prayerslayer 나도 오래 전부터 알고 있었지만 어떻게이 문제를 해결했는지 기억하십니까? Expedia가 다시 당신에게 돌아 왔습니까? – Xander

답변

1

사용 데이터 형식 : "JSONP"

$.ajax({ 
cors:true, 
dataType:"jsonp", 
url:"API END POINT", 
method:"GET", 
success:function(data){ 
    console.log(data); 
} 

}); 
+0

예! 이 작동, 감사합니다 –

+0

이것은 작동하지 않습니다. EAN API는 JSONP를 반환하지 않으므로 JSON을 반환합니다. JSONP 결과는 함수 호출에서 랩핑 된 JSON 결과입니다. 따라서 이는 Expedia API에서 결코 작동하지 않습니다. – ACBM

+0

dataType : jsonp는 Expedia AJAX 호출로 일찍 작업했지만 최근에는 작동이 멈췄습니다. –