发送请求使用jquery,但不是在角

问题描述:

我正在使用角Http角项目http发布请求,&我收到以下错误。发送请求使用jquery,但不是在角

请求标头字段Content-Type在预检响应中不被Access-Control-Allow-Headers所允许。

但是,如果我用jquery发出这个post请求,我不会收到任何错误,它会按照需要的方式执行。

这是我使用的jQuery代码&它没有任何问题。

$(function() { 
    $.post(
    "http://www.anything.com/pdfGenerator/", 
    { 
     orientation: "portrait", 
     paperSize : "letter", 
     return_url : "true", 
     htmlContent: `<h1>Hello</h1>` 
    } 
).done(function (data) { 
    alert("Data Loaded: " + data); 
    }); 
}); 

这里的角码&它不工作,我得到上述错误。

this.url = "http://www.anything.com/pdfGenerator/"; 

let body:any = { 
    orientation: "portrait", 
    paperSize : "letter", 
    htmlContent: `<h1>Hello</h1>`, 
    return_url : "true", 
}; 

this.http.post(this.url, body). 
    subscribe(res => console.log(res)); 

我听到人们说你Response-Header服务器端添加的内容类型。我的意思是,为什么我应该在服务器上添加这个响应头文件,如果它使用jquery工作的很好。如果它正在通过jquery工作而没有做任何额外的事情,那么angular应该也会运行它而不会显示错误。

我做错了什么?我应该怎么做,使其运行在角度上而不需要修改服务器,因为jquery已经在做它了?

可能发生的一件事情是,jQuery发送的角度的$ http不同的Content-Type。这可能归结为默认值,因此您可以尝试更新它以匹配jQuery(您可以检查网络请求以比较正在发送的标头并找到差异)。 在这种情况下,可能是jQuery默认为您的服务器期望的Content-Type,而角度默认为其他值。要设置的角度,你可以使用下面的语法内容类型:[1]

this.http.post(this.url, body, { headers: {'Content-Type': 'application/json'} }) 

我看到字符串化的身体来解决这样的问题的情况下,将不能够告诉我们,如果这是你的情况下,在特定的我没有访问到您的环境,但你可以给它一个去:

this.http.post(this.url, JSON.stringify(body)) 

[1] https://docs.angularjs.org/api/ng/service/ $ HTTP#张贴