【问题标题】:CORS not working with Uber API OAuth endpointsCORS 不适用于 Uber API OAuth 端点
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在向 Uber 技术支持发送电子邮件后,问题是他们没有正确设置 CORS。截至昨天,/v1/me 端点现在正在为我工​​作,而我的应用配置没有任何更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-02
        • 2021-03-12
        • 2018-08-15
        • 2018-02-23
        • 2018-10-16
        • 2015-04-24
        • 2018-05-07
        • 2019-06-19
        相关资源
        最近更新 更多