Mailpimp连接错误(401)与Api v3.0和jQuery Ajax方法

时间:2016-04-21 18:30:35

标签: jquery ajax get mailchimp mailchimp-api-v3.0

我正在尝试使用我的Mailchimp(免费)帐户连接html页面。 我已经阅读了文档,应该很简单。

这是我的JS代码(在页面加载时加载了jQuery 1.2.2):

username = [your-username];
apiKey = [your-mailchimp-api-key];
baseUrlMailchimp = "https://us5.api.mailchimp.com/3.0/";
apiMC = function(type, data, url, callback) {
            $.ajax({
                type: type,
                dataType: 'jsonp',
                data: data,
                contentType: 'application/json',
                url: url,
                beforeSend: function(xhr) {
                    xhr.setRequestHeader('Authorization', 'Basic ' + btoa(username + ":" + apiKey));
                },
                success: function(e) {
                    if (callback) {
                        callback(e)
                    }
                },
                error: function(e) {
                    console.log(e);
                }
            });
        }
apiMC('GET', '', baseUrlMailchimp + 'lists', function(res){console.log(res)})

问题是我收到错误401(您的请求未包含API密钥)。

如果我从Chrome REST客户端发起相同的请求:

http://restclient.net/

在基本auth字段中指定url和user / api,一切正常!

我无法理解为什么,有人可以帮助我吗?

更新:MAILCHIMP的答案

嘿有弗朗西斯科,

我看了一下提供的文章链接,看起来你正在遇到同一个Origin策略块。相同的源策略阻止ajax调用其非原始域。因此,您需要使用服务器端方法来触发API调用。

此外,目前MailChimp不支持Jsonp for API 3.0。

如果还有其他任何我可以提供帮助的内容,请随时退回支持。

END

1 个答案:

答案 0 :(得分:1)

我认为您可能遇到了同源政策。我不认为你可以从AJAX调用另一个域。您可能需要实现呼叫服务器端,可能需要通过网关文件。

https://en.wikipedia.org/wiki/Same-origin_policy