Uber API上的HTTP 406请求具有CORS的端点

时间:2015-04-02 18:55:47

标签: javascript angularjs cors uber-api

我正在使用AngularJS $ http服务对`https://sandbox-api.uber.com/v1/requests'端点进行CORS调用。

以下是对/v1/requests端点的调用:

$http({
  url: 'https://sandbox-api.uber.com/v1/requests',
  method: 'POST',
  data: {
    'product_id': productId,
    'start_latitude': startLatitude,
    'start_longitude': startLongitude,
    'end_latitude': endLatitude,
    'end_longitude': endLongitude,
    'surge_confirmation_id': surgeConfirmationId
  },
  headers: headers: {
    'Authorization': 'Bearer MY_BEARER_TOKEN'
  }
})

在Chrome开发工具中,我可以看到进行了预检OPTIONS来电,但是我收到以下错误:

XMLHttpRequest cannot load https://sandbox-api.uber.com/v1/requests. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.

确实,Access-Control-Allow-Headers响应的OPTIONS标题不包含Content-Type

我的下一个想法是删除Content-Type标题。 Angular $http docs以下列方式指定如何执行此操作:

headers: {
  'Content-Type': undefined
}

删除Content-Type标头的结果是以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost:9000'; is therefore not allowed access. The response had HTTP status code 406.

经过一些研究后,HTTP 406似乎表明该请求没有正确的Accept标头类型,在此特定情况下,该类型似乎为application/json

Accept标头设置为application/json会产生相同的HTTP 406响应。

注意:在我的Uber API应用程序设置中,我将Origin URI正确设置到我的开发服务器(https://localhost:9000),在我的OAuth流程中,我授权request范围。我也能够成功调用其他OAuth和非OAuth端点,但这些端点都接受GET请求。 /v1/requests端点接受POST个请求。

任何人都有关于为什么这不起作用的想法?谢谢!

0 个答案:

没有答案