2017-10-08 11 views
0

각도 HTTP를 사용하는 각 프로젝트에서 http 포스트 요청을 만들고 있습니다. & 다음 오류가 발생합니다.jquery를 사용하여 게시물을 요청했지만 각도가 아닙니다.

요청 헤더 필드 Content-Type은 프리 플라이트 응답에서 Access-Control-Allow-Headers가 허용하지 않습니다.

하지만 jquery로 해당 게시물 요청을하면 오류가 발생하지 않으며 필요한 방식으로 실행됩니다.

이것은 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를 통해 작업하는 경우 오류가 발생하지 않고 각도를 실행해야합니다.

내가 뭘 잘못하고있어? jquery 이미 그것을하고 있으므로 서버를 수정하지 않고 각도에서 실행되도록하려면 어떻게해야합니까?

답변

0

jQuery가 angle의 $ http와는 다른 Content-Type을 보내는 경우가 있습니다. 이는 기본 값 이하일 수 있으므로 jQuery와 일치하도록 업데이트 할 수 있습니다 (네트워크 요청을 검사하여 전송되는 헤더를 비교하고 차이점을 찾을 수 있음). 이 경우 jQuery의 기본값은 Content-Type이며 각도 기본값은 다른 것으로 예상되지만 서버에서 기대할 수 있습니다. 다음과 같은 구문을 사용할 수 있습니다 각도에 콘텐츠 형식을 설정하려면 : [1]

내가 몸을 stringifying 것은이 같은 문제를 해결하는 경우를 볼
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 #

를 게시를