2017-06-30 13 views
0

Yelp Fusion APIへの簡単なajax呼び出しを試みています。私は、Yelpによって提供されたclient_idとclient_secretを使用して、Postmanで 'POST'コールを行い、Yelp APIドキュメントに従ってアクセストークンを受け取りました。このアクセストークンを使用すると、api呼び出しを認証できます。アクセストークンを取得した後、私はPostmanを使って/ business/searchエンドポイントへの 'GET'コールを行い、関連するビジネス情報を取得しました。次の画像が通話するために必要な適切なヘッダおよびパラメータ表示:ポストマンの「SEND」を打った後reflightの応答に無効なHTTPステータスコードがあります。

Postman Headers, Parameters, and Response

を、JSON応答コードが結果であるポストマン(前画像の下部)に表示されていますを探しています。ポストマンはまた、呼び出しを行うために必要なコードを生成する機能を持っている、と私は私のプログラムに彼らの生成AJAXリクエストを挿入:今のところ

var settings = { 
    "async": true, 
    "crossDomain": true, 
    "url": "https://api.yelp.com/v3/businesses/search?term=delis&latitude=37.786882&longitude=-122.399972", 
    "method": "GET", 
    "headers": { 
     "authorization": "Bearer 0P*****************x", 
     "cache-control": "no-cache", 
     "postman-token": "30*************7" 
    }, 
    "data": { 
     "grant_type": "client_credientials", 
     "client_secret": "tp***************m", 
     "client_id": "RO**********w" 
    } 
} 

$.ajax(settings).done(function (response) { 
    console.log(response); 
}); 

、送信ボタンを自分のページ上でクリックされたときに、私が表示したいですコンソールの応答。しかし、Postmanは正しくAJAX呼び出しを行うことができているようだが、正しい応答を受け取ると、Googleクロムブラウザは次のエラーを表示する:Response for preflight has invalid HTTP status code 500。私の理解では、実際の要求が安全に送信できるかどうかを判断するために、HTTP要求がOPTIONSメソッドによってリソースに対して行われたときに、プリフライト要求で最初のエラーが発生します。しかし、私はPostmanが何の問題もなく電話をかけることはできないが、Google Chromeではどうやって呼び出すことができないのか困惑している。どんな助けもありがとうございます。

答えて

0

これはtipical CORSシナリオです

プリフライトリクエストのクロスドメインのブラウザによって行われたHTTPリクエストは、ドメインが実際の要求を送信するために安全であるかどうかを判断する権利「特権」を持っているかどうかを確認するために呼び出すです

プリフライトリクエストでは、サーバーによっていくつかのヘッダーが設定されていることを二重にチェックします。基本的にアクセスを許可されたドメインのリストを指定

"Access-Control-Allow-Origin": "*" 
"Access-Control-Allow-Methods": "GET, POST" 
"Access-Control-Allow-Headers: "X-Custom-Header" 

、方法(ポストなど、入れて、取得)とヘッダを許可することができます。 このエラーはPostmanには表示されません。サーバにプリフライト要求を出さずCORSに関連する問題をバイパスします。

Yelp Fusion APIバックエンドを制御できないため、単純なバックエンドを作成してリクエストする(Cors does not seem to be supported

関連する問題