CORS无法与Uber API OAuth端点配合使用

时间:2015-03-25 17:25:53

标签: javascript oauth cors uber-api

我正在尝试对需要OAuth Bearer令牌的Uber API端点进行客户端JS调用,例如/v1/me,但我收到的错误是Access-Control-Allow-Origin标头不存在响应。

我已成功获得要在GET请求的Authorization标头中使用的承载令牌(服务器端)。

在我的Uber API应用程序设置中,我将Origin URI设置为我的开发服务器(https://localhost:9000)。

以下是我调用/v1/me端点的方式:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.uber.com/v1/me');
xhr.setRequestHeader("Authorization", "Bearer MY_BEARER_TOKEN");
xhr.send();

在Chrome开发者控制台中,我收到以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource

为了确保我的Bearer令牌有效,我使用curl 成功对其进行了测试:

curl -H 'Authorization: Bearer MY_BEARER_TOKEN' 'https://api.uber.com/v1/me'

在旁注中,我能够成功使用授权来调用不需要OAuth Bearer令牌的API端点,例如/products/estimates/price Token标题如下:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.uber.com/v1/products');
xhr.setRequestHeader("Authorization", "Token MY_SERVER_TOKEN");
xhr.send();

这让我相信问题不是Uber API应用配置设置,例如不正确的Origin URI。

最后一点,当我获得OAuth令牌时,我正在https://localhost:8080的开发服务器上运行的Node Express应用程序发出请求,这与我运行客户端JS应用程序的位置不同https://localhost:9000。但是,从同一端口发出请求并没有解决问题。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您是否在应用中的任何位置使用iFrame?当我要求将iFrame用于通常不允许人们这样做的产品时,通常会出现这个问题。

答案 1 :(得分:1)

在通过Uber技术支持发送电子邮件后,问题是CORS没有正确设置。截至昨天,/ v1 / me端点现在正在为我工​​作,我的应用配置没有变化。