在Javascript中使用授权头

在Javascript中使用授权头,javascript,jquery,ajax,authorization,Javascript,Jquery,Ajax,Authorization,我是一个彻头彻尾的傻瓜,我才刚刚开始学习API。我正在尝试使用YelpAPI,但似乎无法访问它。 根据文档,我应该:“将API密钥作为“Authorization:Bearer”放在请求头中” 我不熟悉授权,也不确定我是否做得正确。以下是我的资料 function displayYelp() { var URL = "https://api.yelp.com/v3/businesses/search?term=restaurant&latitude=40.827839

我是一个彻头彻尾的傻瓜,我才刚刚开始学习API。我正在尝试使用YelpAPI,但似乎无法访问它。 根据文档,我应该:“将API密钥作为“Authorization:Bearer”放在请求头中” 我不熟悉授权,也不确定我是否做得正确。以下是我的资料

    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);
  });
}

即使您无法回答我的具体问题,也非常感谢您提供有关授权含义的任何帮助!

授权头经常用于使用令牌对API进行身份验证。您可以阅读有关令牌身份验证的更多信息。您可能希望尝试添加错误处理程序,以便了解问题所在:

$.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调用看起来是正确的

我看到你的评论说你在飞行前遇到了问题。飞行前阻止API请求的原因是Yelp没有发送
访问控制允许源站
头。因为他们不发送此头,所以您将无法发出跨源AJAX请求

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


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

当您运行此代码时,您是否从API获取数据?如果是这样,你做得对。上面的代码看起来不错。您正在将您的请求作为HTTP头传递给服务器。如果您的请求有问题,服务器将以错误消息和非2xx的HTTP代码进行响应。不是我所说的光读,但它应该包含您需要了解的关于OAuth承载令牌身份验证的所有信息。贴出一句话“.这是你最后一个问题的解决方案:”谢谢你的帮助!我收到以下消息:“加载失败:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。因此,不允许访问源站“null”。响应的HTTP状态代码为403。“这是否意味着我的密钥错误或其他问题?非常感谢!再一次,我是一个初学者,所以我需要做更多的研究来理解如何做lol。谢谢你的解释!