API可与Postman一起使用,但无法与Javascript Fetch一起使用

时间:2018-07-20 10:02:23

标签: javascript cors fetch postman basic-authentication

我有一个API,必须向其发布JSON正文以及基本身份验证。使用邮递员时这对我有用,但是,我无法使其与Javascript Fetch方法一起使用。

我的请求正文为:

{
  "plan_id": "plan_AbN7hMdqK8hJ1R",
  "customer_notify": 1,
  "total_count": 6
}

邮递员屏幕截图: Header & URL view of postman

邮递员正文字段: enter image description here

如您所见,获得的结果没有任何问题。但是,当我使用以下代码在Javascript中执行相同操作时,它将失败。

var url = "https://api.somepay.com/v1/subscriptions"

var body = {
  "plan_id": "plan_AbN7hMdqK8hJ1R",
  "customer_notify": 1,
  "total_count": 6
   }

// handle click 
button.on("click", function(){
  fetch(url, 
    {
      method: 'post',    
      mode: 'no-cors',
      body : JSON.stringify(body),
      headers: {
        'Authorization': 'Basic ' + btoa('user:passkey'),
        'Content-Type' :'application/json',
        'Accept' :'application/json'    
        },
    }).then(function(response) {
        return response.json();
    })

})

我遇到以下错误:

enter image description here

1。

  

POST https://api.razorpay.com/v1/subscriptions 401   (未经授权)

2。

  

未捕获(承诺)SyntaxError:输入意外结束       在(index):89

3。

  

跨源读取阻止(CORB)阻止了跨源响应   https://api.apipay.com/v1/subscriptions,MIME类型   应用程序/ json。看到   https://www.chromestatus.com/feature/5629709824032768了解更多   详细信息。

1 个答案:

答案 0 :(得分:-1)

我认为您应该更改此行:

Authorization':'Basic ' + btoa({'user':'passkey'});

Authorization':'Basic ' + btoa(user.passkey);

希望它能起作用。