如何在不设置 content-type 的情况下在 Angular2 中 POST (或如何 post 到 Zapier Webhook)
How to POST in Angular2 without setting content-type (or how to post to Zapier Webhook)
我正在尝试 POST 到 zapier webhook。我可以在 Postman 中毫无问题地做到这一点。
但是当尝试从 Angular 2 执行相同操作时,我从 Zapier 返回以下错误。
Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response
他们的文档说不要设置 Content-Type header,但是我还没有弄清楚如何在没有它的情况下发送请求。
https://zapier.com/help/common-problems-webhooks/
我最近的尝试如下。
let body = { email: 'an@email.com', name :'Mr Test'};
let bodyString = JSON.stringify(body); // Stringify payload
let headers = new Headers({ 'Content-Type': undefined });
let options = new RequestOptions({ headers: headers }); // Create a request option
let request = this.http.post(`https://hooks.zapier.com/hooks/catch`, body, options)
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
request.subscribe((resp) => {
console.log(resp);
});
我也试过了
let headers = new Headers();
和
let options = new RequestOptions();
Angular 2.2.0
您是否尝试过将 application/x-www-form-urlencoded
内容类型设置为您的 Headers
:
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
嘿,你可以尝试将 withCredential 设置为 true,它可以处理跨站点访问控制请求
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers, withCredentials: true });
我正在尝试 POST 到 zapier webhook。我可以在 Postman 中毫无问题地做到这一点。
但是当尝试从 Angular 2 执行相同操作时,我从 Zapier 返回以下错误。
Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response
他们的文档说不要设置 Content-Type header,但是我还没有弄清楚如何在没有它的情况下发送请求。 https://zapier.com/help/common-problems-webhooks/
我最近的尝试如下。
let body = { email: 'an@email.com', name :'Mr Test'};
let bodyString = JSON.stringify(body); // Stringify payload
let headers = new Headers({ 'Content-Type': undefined });
let options = new RequestOptions({ headers: headers }); // Create a request option
let request = this.http.post(`https://hooks.zapier.com/hooks/catch`, body, options)
.map((res:Response) => res.json())
.catch((error:any) => Observable.throw(error.json().error || 'Server error'));
request.subscribe((resp) => {
console.log(resp);
});
我也试过了
let headers = new Headers();
和
let options = new RequestOptions();
Angular 2.2.0
您是否尝试过将 application/x-www-form-urlencoded
内容类型设置为您的 Headers
:
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
嘿,你可以尝试将 withCredential 设置为 true,它可以处理跨站点访问控制请求
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers, withCredentials: true });