使用AJAX向API发出请求时遇到问题

时间:2019-10-10 15:52:42

标签: javascript jquery reactjs express

我的公司使用nocrm.io软件来跟踪潜在客户和客户。我想在我们的Web应用程序中使用它们的API来获取和发布信息。目前,我在尝试使用其API在我们的Web应用程序中发出http请求时遇到问题。每次尝试执行GET请求以ping我的APIKey时,我都会返回401错误。我曾尝试通过Postman发出请求,但这些请求仍然有效,但是当我尝试在我的应用程序中实现这些请求时,这些请求就无效了。

如果任何人有使用此API的经验或对我有帮助的类似内容,那都很棒。

以下是其API的链接:https://youdontneedacrm.com/api#nocrm.io-api

当前,我正在使用jquery AJAX发出请求。我已经尝试按照API的建议将APIKey放在标头中,但这只给了我401和CORS。他们的API还建议您可以将APIKey放入请求的参数中,但仍然会出现相同的401错误。

是的,我还确保我使用的APIKey是正确的,所以这不应该成为问题。

我将请求放入浏览器,该浏览器返回200状态,表示我的APIKey也正确。

下面是当前给我401错误的原因。

myfile.js

import $ from 'jquery'
const api_key = require('../../../env.config.json').CRM.API_KEY;

class Myfile extends React.Component{

 constructor(props){
  super(props);
  this.state = {}
 }

    PingApi(){
        var url = 'https://OUR_ACCOUNT.nocrm.io/api/v2/ping'
        var apikey = api_key

        var dataObject = {
            'X-API-KEY': apikey
        }

        $.ajax({
            type: 'GET',
            dataType: 'jsonp',
            url: url,
            data: dataObject,
            headers: {"Accept": "application/json"},
            crossDomain: true,
            beforeSend: function(xhr){
                xhr.withCredentials = true;
            },
            success: function(data, textStatus, jqXHR){
                console.log("Good");
            },
            error: function(jqXHR, textStatus, errorThrown){
                console.log(jqXHR);
                console.log(textStatus);
                console.log(errorThrown);
            }
        })
    }


 render(){
  return(
   <button onClick={this.PingApi.bind(this)}>Ping API</button>
  );
 }
}

export default Myfile

我希望得到200状态,并返回json对象,但得到401。

编辑 这是在Postman中处理请求的屏幕截图。显然,出于安全原因,我屏蔽了敏感信息。是的,API密钥与我在网络应用程序中使用的密钥相同。

enter image description here

1 个答案:

答案 0 :(得分:1)

虽然您可以通过请求正文或标头(根据文档)传递API密钥-您正在发送GET请求,但没有正文。通过标头传递它:

headers: {"Accept": "application/json", "X-API-KEY": apikey}