【问题标题】:Why am i getting 401 error while making connection to mailchimp API 3.0为什么在连接到 mailchimp API 3.0 时出现 401 错误
【发布时间】:2019-07-30 20:57:15
【问题描述】:

我正在尝试使用 http 请求与邮件黑猩猩 API 3.0 建立连接。但是请求被 CORS 阻止,我从邮件黑猩猩那里收到 401 错误,即我没有传递 API 密钥。但我正在传递钥匙。谁能解释如何解决这个问题。

我也不能为这个项目使用任何插件或库。它必须是 Vanilla JavaScript。

谢谢

get : function(url,callback) {
    var data = JSON.stringify({
    "email_address": "test2@test.ca",
    "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>'

错误: 从源“null”访问 XMLHttpRequest 在“https://us19.api.mailchimp.com/3.0/lists/listid/members”已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“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】:

    我在这里看到可能导致问题的四件事:

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

    试试这个:

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

    【讨论】:

    • 嘿安德烈亚斯,我做了更改,但我仍然遇到同样的错误。
    • 嗯,你可以在发送前console.log(request),并将其添加到问题中吗?只需在共享之前将 Authorization 标头值替换为 xxxx(否则您将共享您的 API 密钥)。
    • 我没有获得任何授权标头值,我已附上图片以供参考
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 2016-07-31
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    相关资源
    最近更新 更多