使用POST方法工作卷曲,但获取API返回错误503

时间:2018-05-25 06:21:49

标签: cors fetch fetch-api

我必须访问私人API(法航航空公司的API之一),并且为了使用他们的任何API,我需要一个访问令牌。 所以in their guide,他们说我们需要使用这个cURL获取令牌:

$ curl https://www.klm.com/oauthcust/oauth/token -d 'grant_type=client_credentials' -u fakeKey:fakeSecret

TERMINAL

当我在终端中执行此cURL,并且替换fakeKeyfakeSecret(我不能在这里不幸地给你)时,它运行良好我得到了这个答案(用适当的代币代替:

{
  "access_token": <TOKEN>,
  "token_type":"bearer",
  "expires_in":3600
}

邮差

当我在Postman中这样做时,这就是我填写的内容:

  • URL:
  • 授权:
    • type:Basic Auth
    • 用户名:我的秘密用户名
    • 密码:我的密码
  • 接头:
    • 授权:从我的用户名和密码自动生成
    • 内容类型:application / x-www-form-urlencoded
  • 车身
    • 已检查x-www-form-urlencoded
    • grant_type:client_credentials

就是这样,当我点击SEND时,我得到了答案和令牌。

FETCH / AXIOS / HTTPRequest

因为我在获取数据时不太好,所以我使用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.

然而,这个错误来自他们的网站似乎很奇怪,我认为这更像是我在获取请求中遗漏的东西。你有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,答案终于有了:请求必须来自后端,否则响应中将没有任何内容(或错误503)。感谢@sideshowbarker很好地解释了评论!