发送请求使用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#张贴