CORS 不适用于 Uber API OAuth 端点

CORS not working with Uber API OAuth endpoints

我正在尝试对需要 OAuth Bearer 令牌的 Uber API 端点进行 client-side JS 调用,例如 /v1/me,但我收到一个错误 Access-Control-Allow-Origin header 不在响应中。

我已成功获得一个 Bearer 令牌 (server-side) 以用于 GET 请求中的授权 header。

在我的 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 使用授权令牌 header 像这样:

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[=49 的开发服务器上的 Node Express 应用程序 运行 发出请求=],这与我 运行 我的 client-side JS 应用程序在 https://localhost:9000 的位置不同。但是从同一个端口发出请求并没有解决问题。

有什么想法吗?谢谢!

您是否在应用程序的任何位置使用 iFrame?当我请求将 iFrame 与通常不允许人们这样做的产品一起使用时,通常会出现该问题。

通过电子邮件联系优步技术支持后,问题是 CORS 在他们这边没有正确设置。从昨天开始,/v1/me 端点现在可以为我工作,我的应用程序配置没有任何变化。