Webサイトを実行するためにnodejsサーバーを実行していて、バックエンドサーバーが外部サーバーのapiを呼び出すようにします。私はこれを実行すると、私が得るnode.jsでajaxリクエストを作成できません
router.post('/calculate', function (req, res) {
var data = /*some json object*/
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "some.server/pricing");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify(data));
xmlhttp.onreadystatechange = function() {
if(xmlhttp.status == 200)
{
var str = xmlhttp.responseText.toString().trim()
dd = JSON.parse(str);
res.send(dd);
//res.end();
}
};
});
:
_http_outgoing.js:346
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
問題がres.send(DD)内にあるように見えます。私は、次の、基本的で簡単な方法を試してみました
EDIT:
さらに調査すると、それはxmlhttp.onreadystatechangeがステータス200で二回起こるように思える、とres.sendが2回呼び出され。ブーリアンフラグを使用してこれを修正する一時的なハックを作成しました。これを修正するrpoper nodejsの方法は何ですか?
nodejsでこのような呼び出しを行う最も簡単な方法は何ですか?私はこれをサーバー側でやりたい私はエクスプレスのようなライブラリを使用していません。ありがとう
でそれを行う 'XMLRequest'を使用しないでください。これは古くからのクライアント側の設計で、ブラウザ側でも置き換えられているサーバー側の要求(したがって問題があります)にとっては非常に恐ろしいものです。 'http.request()'を使うか、node.js用に設計されたnpmの 'request'モジュールを使います。 – jfriend00