2017-03-19 8 views
0

初めてここで質問します。私はこれで初心者ですが、私は本当に私が直面している問題にうんざりしています。使用中のCORSのUber APIの問題

ブラウザ:

  • のSafariとFirefox(Mac OSの両方シエラ上)
  • のFirefox(Linuxの - Ubuntuの16.04.2)

Iはユーバー開発者として登録されていますし、ダッシュボードにAppを登録しました。私は瞬間に認証のためだけにサーバートークンを使用しています。ダッシュボードでは、私はCORS(CORSサポートのオプションURI)のためのAppの「承認」タブで、以下のエントリを設定している:

http://localhost:8000     <-- web server in my PC 
https://subdomain.mydomain.com   <--- remote web server 

数ヶ月前、私は、HTML、CSSを使用してWebアプリケーションを作成し、 JS(Jquery v2.2.4)をRide Estimates APIで使用して、地域の多くの場所のデータを正常にレポートすることができました。どういうわけか、それはもはや機能しません。私はそれを修正し、機能を改善しようとしています。しかし、以前は存在しなかったCORSの問題のために、私はAPIへの最初のクエリを通過できません。

私のAPIのURLは次のとおりです。

https://api.uber.com/v1/estimates/price?start_latitude=8.969145&start_longitude=-79.5177675&end_latitude=8.984104&end_longitude=-79.517467&server_token={*********SERVER*TOKEN**********} 

私は、ブラウザのアドレスバーに、私は有効なJSONを取得することを貼り付けると:

{"prices":[{"localized_display_name":"uberX","distance":1.58,"display_name":"uberX","product_id":"811c3224-5554-4d29-98ae-c4366882011f","high_estimate":3,"surge_multiplier":1.0,"minimum":2,"low_estimate":2,"duration":420,"estimate":"2-3\u00a0$","currency_code":"USD"},{"localized_display_name":"X English","distance":1.58,"display_name":"X English","product_id":"8fe2c122-a4f0-43cc-97e0-ca5ef8b57fbc","high_estimate":4,"surge_multiplier":1.0,"minimum":3,"low_estimate":3,"duration":420,"estimate":"3-4\u00a0$","currency_code":"USD"},{"localized_display_name":"uberXL","distance":1.58,"display_name":"uberXL","product_id":"eb454d82-dcef-4d56-97ca-04cb11844ff2","high_estimate":4,"surge_multiplier":1.0,"minimum":3,"low_estimate":3,"duration":420,"estimate":"3-4\u00a0$","currency_code":"USD"},{"localized_display_name":"Uber Black","distance":1.58,"display_name":"Uber Black","product_id":"ba49000c-3b04-4f54-8d50-f7ae0e20e867","high_estimate":6,"surge_multiplier":1.0,"minimum":4,"low_estimate":4,"duration":420,"estimate":"4-6\u00a0$","currency_code":"USD"},{"localized_display_name":"Uber SUV","distance":1.58,"display_name":"Uber SUV","product_id":"65aaf0c2-655a-437d-bf72-5d935cf95ec9","high_estimate":7,"surge_multiplier":1.0,"minimum":5,"low_estimate":5,"duration":420,"estimate":"5-7\u00a0$","currency_code":"USD"}]} 

私はその後、(JSを設定するために進んでワット/ jQueryの)コード...

var url = "https://api.uber.com/v1/estimates/price?start_latitude=8.969145&start_longitude=-79.5177675&end_latitude=8.984104&end_longitude=-79.517467&server_token={*********SERVER*TOKEN**********}"; 

$.getJSON(url, function(result){ 
    console.log(result); 
}); 

HTMLとJSをリモートWebサーバーにアップロードしてから、自分のbのいずれかにWebページを読み込みますローダーはUber APIから200ステータスを生成します。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.uber.com/v1/estimates/price?start_latitude=8.969145&start_longitude=-79.5177675&end_latitude=8.984104&end_longitude=-79.517467&server_token={*********SERVER*TOKEN**********}. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). 

その後、両方のMacのブラウザのインス​​ペクタビューで、ネットワーク/リソース領域の下で、私はGETから200のステータス・メッセージが表示されます。ただし、コンソールログは、CORSが私の要求をブロックする(問題#1)を示します要求。しかし、応答メッセージと一緒に(問題#2):

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data 

リクエストヘッダは以下のとおりです。

GET /v1/estimates/price?start_latitude=8.969145&start_longitude=-79.5177675&end_latitude=8.984104&end_longitude=-79.517467&server_token={*********SERVER*TOKEN**********} HTTP/1.1 
Host: api.uber.com 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0 
Accept: application/json, text/javascript, */*; q=0.01 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate, br 
Referer: https://subdomain.domain.com/Uber/index.html 
Origin: https://subdomain.domain.com 
Connection: keep-alive 

は、レスポンスヘッダは以下のとおりです。Linux用のFirefoxで

HTTP/1.1 200 OK 
Server: nginx 
Date: Sun, 19 Mar 2017 22:26:31 GMT 
Content-Type: application/json 
Transfer-Encoding: chunked 
Connection: keep-alive 
Content-Geo-System: wgs-84 
Content-Language: en 
X-Rate-Limit-Limit: 2000 
X-Rate-Limit-Remaining: 1998 
X-Rate-Limit-Reset: 1489964400 
X-Uber-App: uberex-nonsandbox, optimus, migrator-uberex-optimus 
Strict-Transport-Security: max-age=604800 
X-Content-Type-Options: nosniff 
X-XSS-Protection: 1; mode=block 
Content-Encoding: gzip 

私は時々構文エラーを取得しないでください。私はいつもMacのブラウザでそれを得るようです。 Linuxでは、そのエラーが表示されたら、「ヘッダーを再送するがヘッダーを実際に編集することなく、ヘッダーの編集と再送信」ボタンをクリックすると構文エラーが消え、実際には応答テキストにUber APIオブジェクトが表示されるそこに...しかし、私はまだコンソールログにCORSブロックされたメッセージを取得します。なぜ私はこのことが分かりませんが、それは矛盾しているようです。結局、APIデータを使用することができなくなりました。同じメソッドを数か月前に使用して、数十箇所の場所にアクセスできるようになりました。

私は同様の質問で回答を探しましたが、これまでのところ私の場合に該当するものは見つかりませんでした。どんな助けでも大歓迎です。本当にイライラしています...本当にここにこだわっています。

+0

Safari(Mac)で私が「開発」メニューに移動して「クロスオリジンの制限を無効にする」を有効にすると、そのブラウザのCORSに問題はありませんでしたが、解決策になる、私は確信しています。 – hutchit

+0

私はUber APIがCORSヘッダーを期待通りに含んでいないという問題があると思います。バグのように見える - 私は報告して、一度解決した後にフォローアップします。 –

答えて

1

この問題は、APIがヘッダーを正しく含まないために発生しました。この問題は解決され、APIは現在期待どおりに動作しています。また、要求に原点が指定されている場合にのみ、許可原点ヘッダーが返されます。

+0

返信いただきありがとうございます...私のWebアプリケーションは現在動作しています。 – hutchit