我正在尝试使用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" }
我看到四件可能导致问题的事情:
Authentication
标头的用户名和密码进行base64编码。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);