我必须访问私人API(法航航空公司的API之一),并且为了使用他们的任何API,我需要一个访问令牌。 所以in their guide,他们说我们需要使用这个cURL获取令牌:
$ curl https://www.klm.com/oauthcust/oauth/token -d 'grant_type=client_credentials' -u fakeKey:fakeSecret
当我在终端中执行此cURL,并且替换fakeKey
和fakeSecret
(我不能在这里不幸地给你)时,它运行良好我得到了这个答案(用适当的代币代替:
{
"access_token": <TOKEN>,
"token_type":"bearer",
"expires_in":3600
}
当我在Postman中这样做时,这就是我填写的内容:
就是这样,当我点击SEND
时,我得到了答案和令牌。
因为我在获取数据时不太好,所以我使用https://kigiri.github.io/fetch/从我的cURL转换为fetch
JS方法。它给我这个代码:
fetch("https://www.klm.com/oauthcust/oauth/token", {
body: "grant_type=client_credentials",
headers: {
Authorization: "Basic <HASH_COMPILED_FROM_USERNAME_PASSWORD>",
"Content-Type": "application/x-www-form-urlencoded"
},
method: "POST"
})
<HASH_COMPILED_FROM_USERNAME_PASSWORD>
与Postman编译的完全相同。
因此,此抓取对我来说似乎没问题,但是在Chrome上它会返回Response for preflight has invalid HTTP status code 503.
Opera正在回复我Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin <MY_WEBSITE> is therefore not allowed access. The response had HTTP status code 503.
然而,这个错误来自他们的网站似乎很奇怪,我认为这更像是我在获取请求中遗漏的东西。你有什么想法吗?
谢谢!
答案 0 :(得分:0)
好吧,答案终于有了:请求必须来自后端,否则响应中将没有任何内容(或错误503)。感谢@sideshowbarker很好地解释了评论!