現在、Node を使用して API (Discogs API) からデータを取得していますが、リクエスト時に次のエラーが発生しました。
{ [Error: Parse Error] bytesParsed: 0, code: 'HPE_INVALID_CONSTANT' }
このリンクを使用: http://api.discogs.com/releases/249504 (ただし、他のすべてのリクエストで同じエラーが発生しますcontent-length != actual content length
)
そして、このコード:
var http = require('http');
var options = {
hostname: 'api.discogs.com',
port: 80,
path: '/releases/249504',
method: 'GET'
};
var req = http.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.on('data', function(d) {
console.log(d);
});
});
req.end();
req.on('error', function(e) {
console.error(e);
});
Content-length 値は常に実際の応答バイト長よりも小さいことがわかりました。
Content-length : 2142
Actual Byte Length : 7,734 Bytes (according to https://mothereff.in/byte-counter)
Node のパーサーは非常に厳密であり、それが応答の解析に失敗する理由だと読んだことがあります。
最後に、ノードが応答を解析する直前にヘッダーを無視/変更/削除する方法があるかどうかを尋ねているので、パーサーは Content-Length を無視して作業を行うことができますか?