Angular7使用Mailchimp RESTFUL API

问题描述 投票:0回答:1

我正在尝试发出HTTP POST请求以使用Mailchimp API(来自Angular7代码)但我得到这个回应:

从源'https://us12.api.mailchimp.com/3.0/lists/ddddddd/members'到'http://localhost:4200'处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:没有'Access-Control-Allow-Origin'标头在请求的资源上。

从REST客户端,我可以在Mailchimp中插入而不会出现此CROS问题

enter image description here

export class MyService {
  
  constructor(public httpRequestsService: HttpRequestsService) { }

  private async getHttpHeader() {
    const rheaders = new HttpHeaders({
      'Content-Type': 'application/json' , 
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
      'Access-Control-Allow-Headers':'X-Requested-With',
      'Authorization': 'apikey ' + MailchimpSettings.API_KEY
    });
    return { headers: rheaders };
  }

  public async AddNewMember(email: string, language = 'en', status = , mergeFields?: any) {
    var url = MailchimpSettings.URL;

    var body = {
      "email_address": email,
      "status": MailchimpSettings.SUBSCRIBED_STATUS,
      "language": language
    };
    
    var httpOptions = await this.getHttpHeader();
    var _body = JSON.stringify(body);

    var result = await this.post(url, _body, httpOptions);
    
  }
  
  public async post(url: string, body: string | {} = {}, requestHeaders?: any): Promise<Response> {
     
     return this.http.post(url, body, requestHeaders).toPromise()
       .then((res: any) => {
         return res;
       })
       .catch((err) => {
         return this.handleErrorPromise(err);
       });
   }
}

任何可以通过正确的HTTP标头(或任何必要的更改)来帮助我以重现REST客户端行为并能够成功进行POST的人。

感谢您的帮助

httpclient angular7 ionic4 rest-client
1个回答
0
投票

不幸的是,答案是你不能。 Mailchimp不支持CORS,因为这将需要传递API凭据,并且这是不安全的。

该选项是从另一个服务器发出请求,就像您从REST客户端中提到的那样,或者创建将使用更多受限API调用的自定义注册表单。

© www.soinside.com 2019 - 2024. All rights reserved.