为什么我在连接到mailchimp API 3.0时遇到401错误

问题描述 投票:0回答:1

我正在尝试使用http请求与邮件黑猩猩API 3.0建立连接。但请求被CORS阻止,我从邮件黑猩猩得到401错误,即我没有通过API密钥。但我正在传递密钥。任何人都可以解释如何解决这个问题。

此外,我不能为此项目使用任何插件或库。它必须是Vanilla JavaScript。

谢谢

get : function(url,callback) {
    var data = JSON.stringify({
    "email_address": "[email protected]",
    "status": "subscribed"
    });


    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
           var response = JSON.parse(request.response);
            callback(response);
        }
    }; 

    request.open('get',url,true);

    request.setRequestHeader('Authorization', 'Basic ' + btoa('anystring' + ':' + myapikey));
    request.setRequestHeader('content-type', 'application/json');
    request.setRequestHeader('Access-Control-Allow-Origin', '*');

    request.send(data);
}

作为参考,这是来自mailchimp的示例代码。

curl --request GET \
--url 'https://<dc>.api.mailchimp.com/3.0/' \
--user 'anystring:<your_apikey>'

错误:CORS策略阻止了对来自'null'的'https://us19.api.mailchimp.com/3.0/lists/listid/members'的XMLHttpRequest的访问:对预检请求的响应未通过访问控制检查:请求的资源上没有'Access-Control-Allow-Origin'标头。

并点击链接给我

{“type”:“http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/”,“title”:“API Key Missing”,“status”:401,“detail”:“您的请求未包含API密钥。”,“instance”:“c8c5e111-6969- 41a1-9e68-f545959ba6c5" }

Console.log(request);

javascript mailchimp-api-v3.0
1个回答
0
投票

我看到四件可能导致问题的事情:

  1. 尝试使用'get'HTTP方法进行调用,例如来自mailchimp的示例代码。
  2. 您需要对Authentication标头的用户名和密码进行base64编码。
  3. “基本”和实际身份验证令牌之间缺少空格。
  4. 在设置setRequestHeader标头时,您没有正确使用Access-Control-Allow-Origin方法。该值应该是它自己的参数。

试试这个:

    request.open('get',url,true);

    request.setRequestHeader('Authorization', 'Basic ' + btoa('anystring' + ':' + myapikey));
    request.setRequestHeader('content-type', 'application/json');
    request.setRequestHeader('Access-Control-Allow-Origin', '*');

    request.send(data);
© www.soinside.com 2019 - 2024. All rights reserved.