在Javascript中使用授权标头

时间:2018-03-06 00:00:20

标签: javascript jquery ajax authorization

我是一个总菜鸟,我刚刚开始学习API。我试图使用Yelp API,但似乎无法访问它。 根据文档,我应该:"将API密钥放在请求标头中作为"授权:承载" 我不熟悉授权,也不确定我是否正确地执行了授权。这就是我所拥有的

    function displayYelp() {
  var URL =
    "https://api.yelp.com/v3/businesses/search?term=restaurant&latitude=40.82783908257346&longitude=-74.10162448883057";

  $.ajax({
    url: URL,
    method: "GET",
    headers: {
      authorization:
        "bearer //My Key Goes Here",
    },
  }).then(function(response) {
    console.log(response);
  });
}

即使您无法回答我的具体问题,也欢迎任何有关授权方式的帮助!

2 个答案:

答案 0 :(得分:0)

Authorization标头经常用于使用令牌对API进行身份验证。您可以阅读有关令牌身份验证here的更多信息。您可能想尝试添加错误处理程序,以便查看问题所在:

$.ajax({
  url: URL,
  method: "GET",
  headers: {
    "Authorization":
      "Bearer //My Key Goes Here",
  },
}).then(function(response) {
  console.log(response);
}).catch(function(err) {
  console.error(err);
});

您可能还需要将“授权”和“承载”大写,以便拥有正确的标题格式。否则,你的ajax调用看起来是正确的!

答案 1 :(得分:0)

我看到你的评论说你在预检方面遇到了问题。在预检期间阻止API请求的原因是因为Yelp没有发送Access-Control-Allow-Origin标头。因为他们不发送此标头,您将无法进行跨源AJAX请求。

在搜索GitHub之后,我发现有几个来源支持Yelp API因为CORS安全问题而不支持客户端JavaScript的事实:

CORS issue Fetch API cannot load https://api.yelp.com #25

Does api.yelp.com support Access-Control-Allow-Origin header for client-side JS? #99

这意味着您需要使用服务器端方法来使用API​​。免责声明:我已经看到了JSONP方法的提及,但还没有找到一个有效的例子。