我正在使用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
个请求。
任何人都有关于为什么这不起作用的想法?谢谢!