With nodeJS v0.10.28, is there a limit in the size/length of the header content in an http request?
Let me explain:
I need to consume rest services provided by a 3rd party provider. The data returned to me is in the header of the request, the body is mostly empty (120 or so chars). The amount of data in the header varies from a few chars to several 100kb.
var https = require('https');
var httpHeaders = {
Authorization: 'Basic ' + new Buffer(user + ':' + psw).toString('base64'),
accept: '*/*',
'Content-Type': 'text/plain; charset=utf-8'
};
var options = {
host: "www.website.com",
port: 8080,
path: "/" ,
method: 'GET',
headers: httpHeaders,
rejectUnauthorized: false,
requestCert: true,
agent: false
};
https.request(options, function(res) {
res.setEncoding('utf8');
if (res.statusCode == 200) {
var json = res.headers["someHeaderInfo"];
callback(null,{ "result" : JSON.parse(json) });
} else {
callback({ "error" : res.statusCode });
}
}).on('data', function (chunk) {
console.log('BODY: ' + chunk);
}).on('error', function(e, res) {
console.log(" Got error: " + e.message);
callback({ "error" : e.message });
}).end();
The code above works fine for smaller size headers but fails on the on('error', with "Parse Error" message on larger headers.
Removing the on error clause throws this exception:
Error: Parse Error
at CleartextStream.socketOnData (http.js:1583:20)
at CleartextStream.read [as _read] (tls.js:511:12)
at CleartextStream.Readable.read (_stream_readable.js:320:10)
at EncryptedStream.write [as _write] (tls.js:366:25)
at doWrite (_stream_writable.js:226:10)
at writeOrBuffer (_stream_writable.js:216:5)
at EncryptedStream.Writable.write (_stream_writable.js:183:11)
at write (_stream_readable.js:582:24)
at flow (_stream_readable.js:591:7)
at Socket.pipeOnReadable (_stream_readable.js:623:5)
Is there a limit on the header size, can it me changed? what solution do I have?
Thanks
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…