node.js – http.request中的nodeJS最大标头大小

对于nodeJS v0.10.28,http请求中的标头内容的大小/长度是否有限制?

让我解释:

我需要使用第三方提供商提供的休息服务.返回给我的数据在请求的标题中,正文大部分是空的(120左右的字符).标头中的数据量从几个字符到几百字节不等.

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();

上面的代码适用于较小尺寸的标题,但在on(‘error’,在较大的标题上带有“Parse Error”消息时失败.

删除on error子句会引发此异常:

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)

标题大小是否有限制,我可以改变吗?我有什么解决方案?

谢谢

解决方法

Node使用的HTTP协议解析器似乎是硬编码的,最大标头大小为80KB. Relevant constant.由于这是一个编译时常量,你必须使用自定义编译的Node版本来设置更大的常量.

听起来你正在使用的服务通过将大量数据放入标题中而犯了错误.标头用于有关请求正文的元数据.如果他们要返回那么多数据,他们应该将它包含在请求体中.

您可以使用像http-parser-js这样的备用HTTP解析器进行探索,因为它似乎没有限制.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...