我试图发出HTTP POST请求以使用Mailchimp (来自Angular7代码),但我得到了以下响应:
CORS策略阻止了从源'http://localhost:4200‘在'https://us12.api.mailchimp.com/3.0/lists/ddddddd/members’对XMLHttpRequest的访问:对印前检查请求的响应未通过访问控制检查:请求的资源上不存在' Access - control -Allow- origin‘标头。
从REST客户端,我可以在Mailchimp中进行插入,而不会出现这个CROS问题

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客户端的行为,并能够使一个成功的帖子。
谢谢你的帮忙
发布于 2019-11-25 05:06:03
不幸的是,答案是你不能。Mailchimp不支持CORS,因为这需要传递API凭证,这是不安全的。
您可以选择从另一个服务器发出请求,就像您在REST客户端中提到的那样,或者创建一个自定义注册表单,该表单将使用更多受限的API调用。
或者对mailchimp表单客户端使用jsonp请求。
请参阅this
https://stackoverflow.com/questions/57948931
复制相似问题