0

Expedia APIを使用して、ホテル検索のフロントエンドをいじっています。localhost:3000 で実行される node.js サーバーと、場所と日付を入力するための単純なバックボーン ビューをセットアップしました。

ただし、エクスペディアにリクエストを送信すると、常に取得されます

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

これが私の送信コードです。これは正常に動作するはずです。

$.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 );
});

私は JSFiddle からこのコードを試して、禁止しているだけかどうかを確認しましたが、役に立ちlocalhostませんでした。Same Origin Policy エラーが再び発生しました。

今私は疑問に思っています:

  1. Expedia はクロス オリジン リクエストをサポートしていますか?
  2. 多分私は彼らのウェブサイトのどこかに私の選択したオリジンを入力することになっていますか? 何も見つかりませんでした。
  3. 1. に対する答えが「いいえ」の場合、開発者は API を使用してどのように製品を構築することになっているのでしょうか?
  4. 私はただ愚かですか?

前もって感謝します!

4

1 に答える 1

1

dataType:"jsonp" を使用

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

});
于 2015-07-16T16:35:33.510 に答える