使用$ .Ajax调用UBER API

时间:2019-01-09 02:56:45

标签: javascript jquery api curl

以下是uber api文档:

curl -H 'Authorization: Token <SERVER_TOKEN>' \
     -H 'Accept-Language: en_US' \
     -H 'Content-Type: application/json' \
     'https://api.uber.com/v1.2/estimates/price?start_latitude=37.7752315&start_longitude=-122.418075&end_latitude=37.7752415&end_longitude=-122.518075'

这是我正在使用的代码:

jQuery.ajax({
            type: "GET",
            url: "https://api.uber.com/v1.2/estimates/price?start_latitude=37.7752315&start_longitude=-122.418075&end_latitude=37.7752415&end_longitude=-122.518075",
            beforeSend: function(xhr) {

                xhr.setRequestHeader("Authorization", "Token <myToken>");
                xhr.setRequestHeader('Accept-Language', 'en_US'); 
                xhr.setRequestHeader('Content-Type', 'application/json');
                xhr.setRequestHeader("Access-Control-Allow-Origin","*");

            },
            success: function(data){
               console.log(data);
            }
        });

我收到的错误是“从源'null'访问XMLHttpRequest在'https://api.uber.com/v1.2/estimates/price?start_latitude=37.7752315&start_longitude=-122.418075&end_latitude=37.7752415&end_longitude=-122.518075'处已被CORS策略阻止:Access-Control不允许请求标头字段access-control-allow-origin -允许Headers进行飞行前响应。”

我认为应该在标头中进行处理,但是我在某个地方出了错。

谢谢!

编辑:下面的正确响应

1 个答案:

答案 0 :(得分:2)

根据Uber文档,该API支持CORS来验证将使用您的服务器令牌调用Uber API的来源。

CORS验证到达API的请求的原始域,以此作为一种机制,以防止不允许的源使用您的API。但是,这不是身份验证方案。您可以在CORS这里阅读更多信息。

要解决此问题,您需要在“应用程序设置”的“安全性”部分中,将发出请求的来源域配置为Uber中应用程序的配置:Cross-Origin Resource Sharing