【问题标题】:Basic Auth not working in jquery but working in other languages基本身份验证不适用于 jquery,但可以使用其他语言
【发布时间】:2015-11-18 21:24:43
【问题描述】:

我正在尝试使用 Jquery 中的基本身份验证协议对用户进行身份验证,但它一直给出错误:“XMLHttpRequest 无法加载 https://api.credly.com/v1.1/authenticate。Access-Control-Allow-Headers 不允许请求标头字段授权。”

但是当我使用邮递员客户端检查 API 时,它工作正常。

jQuery 代码:

 var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://api.credly.com/v1.1/authenticate",
  "method": "POST",
  "headers": {
    "x-api-key": "myAPIkey",
    "x-api-secret": "mySECRET",
    "authorization": "Basic "+btoa(<email> + ":" + <password>)
  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

API 正在为 POSTMAN 客户端工作,因此应该没有问题,但它在 Jquery 中不起作用。 请帮忙。

【问题讨论】:

标签: javascript jquery basic-authentication


【解决方案1】:

使用dataType : 'jsonp' 进行跨域请求,See also

 var settings = {
  "async": true,
  "crossDomain": true,
  dataType : 'jsonp',   //Cross Domain request
  "url": "https://api.credly.com/v1.1/authenticate",
  "method": "POST",
  "headers": {
    "x-api-key": "myAPIkey",
    "x-api-secret": "mySECRET",
    "authorization": "Basic "+btoa(<email> + ":" + <password>)
  }
}

【讨论】:

  • 我尝试了 jsonp,但由于某种原因,我的 POST 请求在 chrome 控制台中显示为 GET
  • 什么@siddhant?其他浏览器呢/
  • 我刚刚发现 jsonp 无法发出 POST 请求,请参阅此链接:stackoverflow.com/questions/3860111/…
  • "access-control-allow-origin": "*" is set 我可以使用 POSTMAN 但不能使用 Jquery 进行成功调用
  • 我使用了正确的密钥和秘密,因为我能够成功调用 POSTMAN 客户端(甚至使用其他语言,例如目标 c)。如果密钥或秘密是错误的,它应该给出错误而不是标题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
相关资源
最近更新 更多