如何在没有设置内容类型的情况下在Angular2中发布(或者如何发布到Zapier Webhook)

时间:2016-12-23 05:10:04

标签: angular zapier

我正在尝试发布到zapier webhook。我可以在Postman中毫无问题地做到这一点。

但是当试图从Angular 2做同样的事情时,我从Zapier那里得到了以下错误。

  

请求标题字段预检响应中的Access-Control-Allow-Headers不允许使用Content-Type

他们的文档说不要设置Content-Type标题,但是我还没有找到如何在没有它的情况下发送请求。 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

2 个答案:

答案 0 :(得分:1)

您是否尝试过将Headers内容类型设置为let headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded'); let options = new RequestOptions({ headers: headers });

IntStream

答案 1 :(得分:1)

嘿,你可以尝试将ofCredential设置为true,它可以处理跨站点访问控制请求

 let headers = new Headers();
 headers.append('Content-Type', 'application/x-www-form-urlencoded');
 let options = new RequestOptions({ headers: headers, withCredentials: true });