小编典典

Mailchimp如何在JavaScript中调用mailchimp 3.0 API

ajax

我正在尝试将电子邮件订阅到mailchimp上的列表,我首先遵循了文档,使用“邮递员”发出了一个请求,添加了所需内容,并且一切正常,因此我尝试在我的网站上进行操作,但没有工作

我试图用与邮递员相同的值发出一个简单的请求,但是每次尝试发送请求时,响应都说

XMLHttpRequest无法加载
https://us12.api.mailchimp.com/3.0/lists/xxxxxx/members。对预检请求的响应未通过访问控制检查:在所请求的资源上不存在“
Access-Control-Allow-Origin”标头。因此,不允许访问源“
https://mywebsite.com ”。响应的HTTP状态码为501。

我试图找到一种方法来克服这个问题,但这是不可能的

我在stackoverflow上进行了搜索,每个人都说要使用jsonp或向ajax调用中添加某些内容,或者使用mailchimp ajax插件都没有用

我试过了 cache: false dataType:jsonp crossDomain: true xhrFields: {withCredentials: true}

这是我的代码,我正在使用Jquery

$.ajax({
          type: "POST",
          url: "https://usxx.api.mailchimp.com/3.0/lists/xxxxxxxx/members",

          data: { "email_address":email@adress.com,  "status":"subscribed"},
          headers: {
            "Authorization": "Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==",
            "Content-Type": "application/json"
          },
          success: function(data){
             alert('Thanks for subscribing');
          },
          error: function(data){
            alert('there was an error, try again later');
          }
});

我也考虑过要创建自己的api,然后调用mailchimp api,但我可能会遇到相同的问题

你有什么建议吗?

提前致谢


阅读 236

收藏
2020-07-26

共1个答案

小编典典

正如charliefl所指出的,这是一个CORS问题。MailChimp不支持CORS,主要是因为它需要您将API凭据传递给网页用户,以允许他们接管您的整个帐户。

MailChimp的两个选择是通过服务器代理您的请求,或者,为了将人们注册到您的列表中,您可以构建使用更为严格的API
的自定义注册表单。第二种方法的警告是,它通过MailChimp的双重选择加入过程强制您的所有订阅。

2020-07-26