【问题标题】:Not able to parse Authorization Header无法解析授权标头
【发布时间】:2021-01-30 03:39:44
【问题描述】:

按照我的 Remedy 团队的说明,我正在使用他的查询参数调用 API,我收到“无法解析授权标头”错误

var yhttp = new XMLHttpRequest();
var phonedata=":People?q=%27Phone%20Number%20Business%27%20%3D%20%22%2B12017148030%22&fields=userid";
yhttp.open('GET', 'https://remproditsm.broadridge.net/api/arsys/v1/entry/CTM:People?q=%27Phone%20Number%20Business%27%20%3D%20%22%2B12017148030%22&fields=ciscofinesse');
yhttp.setRequestHeader('Authorization', 'Bearer' + response);
yhttp.setRequestHeader('Content-Type', 'application/json');
yhttp.send();

已尝试使用 AR-JWT 代替 Bearer,已尝试使用 application/json 标头但没有,我不相信我是否应该在标头中传递它,但补救团队建议我通过它。此外,这在 Postman 中也可以正常工作。

【问题讨论】:

  • 我对 Remedy 一无所知,但从您的代码中我们不知道 response 变量中的内容
  • 响应变量有我的令牌
  • 是否也以空格开头?因为你需要在“Bearer”和令牌之间有一个空格。
  • 我也试过空间,同样的错误

标签: postman remedy


【解决方案1】:

是的,您需要“AR-JWT {token}”作为您的授权标头值。令牌应在登录调用后存储并用于每个后续 REST 操作。 https://docs.bmc.com/docs/ars2008/examples-of-using-the-rest-api-to-get-update-and-delete-an-entry-from-a-form-929631054.html

【讨论】:

    【解决方案2】:

    好的,我发现了问题,默认情况下 AJAx 请求是异步的,我使用响应中的变量作为令牌,当它到达第二个 GET API 请求时,res 变量中没有任何内容,所以我转换了我对令牌的第一个 API 请求同步

    xhttp.open('POST', 'url',false);

              xhttp.setRequestHeader('authString', 'authentication string');
    
                xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
                xhttp.send(data);
    
                res= xhttp.responseText;
    
                    document.write(res);
    

    【讨论】:

      【解决方案3】:

      我建议仔细检查邮递员,右侧有 CODE 按钮,

      然后将工作版本从邮递员导出到 JavaScript-XHR。

      【讨论】:

      • 感谢您的指导,在邮递员中我看到了这个额外的标题,不确定它是什么,如果我需要做一些事情 xhr.setRequestHeader("Cookie", "_cacheId=816322; remproditsm.broadridge.净=14b5a3d9b3c4e7deb90b6d6e4584b8fb7f65bea8933fc2d4d2ee1197d6e6465a291fbad");
      • 另外,我使用邮递员的相同代码,我收到此错误 [{"messageType":"ERROR","messageText":"Qualification line error","messageNumber":4558,"messageAppendedText ":" 在位置 0。"}]
      • 我认为这与提升有关,例如我的令牌在变量“res”中,res 是一个全局变量 xhttp.onload = function() { res= xhttp.response; document.write(res); } document.write(res);所以如果你看到我也试图在外面打印 res 值只是为了检查值,它显示我是未定义的,然后是令牌
      猜你喜欢
      • 1970-01-01
      • 2020-05-22
      • 2010-11-23
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      相关资源
      最近更新 更多