nodeJS-max-header-Größe in http.Anfrage

Mit nodeJS v0.10.28, gibt es eine Beschränkung in der Größe/Länge der header-Inhalt einer http-Anforderung?

Lassen Sie mich erklären:

Brauche ich, um zu konsumieren, rest-services, bereitgestellt durch eine 3rd-party-Anbieter. Die Daten zurückgegeben, die mir in den header der Anforderung, der Körper ist meist leer (120 oder so chars). Die Menge der Daten in den header variiert von ein paar chars auf mehrere 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();

Den code oben funktioniert gut für kleinere Header, sondern schlägt auf die on('error', mit "Parse Error" Meldung auf größeren Header.

Entfernen der on error-Klausel wirft diese 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)

Gibt es eine Grenze, die auf der header-Größe, kann es mich verändert? welche Lösung habe ich?

Dank

InformationsquelleAutor pts4 | 2014-06-11
Schreibe einen Kommentar