为啥在连接到 mailchimp API 3.0 时出现 401 错误
Posted
技术标签:
【中文标题】为啥在连接到 mailchimp API 3.0 时出现 401 错误【英文标题】: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);
【问题讨论】:
【参考方案1】:我在这里看到可能导致问题的四件事:
-
尝试使用“get”HTTP 方法进行调用,就像在 mailchimp 的示例代码中一样。
您需要对
Authentication
标头的用户名和密码进行base64 编码。
“基本”和实际身份验证令牌之间缺少一个空格。
在设置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 密钥)。
我没有获得任何授权标头值,我已附上图片以供参考以上是关于为啥在连接到 mailchimp API 3.0 时出现 401 错误的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 mailchimp API 3.0 中按成员获取细分?