2017-10-08 17 views
0

角度のあるプロジェクトで角度のあるプロジェクトで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でのContent-Typeを追加すると言って人を聞きました。つまり、jqueryを使用して正常に動作している場合、なぜこれをサーバー上のレスポンスヘッダーに追加する必要がありますか?余計なことをせずにjqueryを使って作業している場合は、エラーが表示されずにangleを実行する必要があります。

私は間違っていますか? jqueryはすでにそれをやっているので、私はそれをサーバーを変更せずに角度で実行するために何をすべきですか?

答えて

0

jQueryがangleの$ 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#

を投稿します
関連する問題