以下是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进行飞行前响应。”
我认为应该在标头中进行处理,但是我在某个地方出了错。
谢谢!
编辑:下面的正确响应
答案 0 :(得分:2)
根据Uber文档,该API支持CORS来验证将使用您的服务器令牌调用Uber API的来源。
CORS验证到达API的请求的原始域,以此作为一种机制,以防止不允许的源使用您的API。但是,这不是身份验证方案。您可以在CORS这里阅读更多信息。
要解决此问题,您需要在“应用程序设置”的“安全性”部分中,将发出请求的来源域配置为Uber中应用程序的配置:Cross-Origin Resource Sharing