【发布时间】:2015-05-29 12:32:45
【问题描述】:
我正在尝试对需要 OAuth Bearer 令牌(例如 /v1/me)的 Uber API 端点进行客户端 JS 调用,但我收到一个错误,即响应中不存在 Access-Control-Allow-Origin 标头。
我已经成功获得了一个承载令牌(服务器端)以在 GET 请求的授权标头中使用。
在我的 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'
附带说明,我能够成功使用 Authorization Token 标头调用不需要 OAuth Bearer 令牌的 API 端点,例如 /products 和 /estimates/price :
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 应用发出请求,这与我在 @987654323 运行客户端 JS 应用的位置不同@。然而,从同一个端口发出请求并没有解决问题。
有什么想法吗?谢谢!
【问题讨论】:
标签: javascript oauth cors uber-api