Node.js HTTP获取URL长度限制

Bru*_*per 14 javascript http node.js

在Node.js中发出HTTP GET请求时是否有大小限制?如果是这样,我该如何改变呢?

var url = "..." // very long, ~50'000 chars
http.get(url, function (res) {
    res.pipe(fs.createWriteStream("file.txt"));
});
Run Code Online (Sandbox Code Playgroud)

给我这个:

<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>
Run Code Online (Sandbox Code Playgroud)

在PowerShell或Bash中使用wget同样的功能完全正常.

$url = "..."
wget -outf file.txt $url
Run Code Online (Sandbox Code Playgroud)

Ale*_*rev 22

Node强制执行内置请求大小限制.请求的标头+ URI不应超过80 kb.

正如在http_parser.h#L55中定义的那样:

/* Maximium header size allowed */
#define HTTP_MAX_HEADER_SIZE (80*1024)
Run Code Online (Sandbox Code Playgroud)

假设UTF-8字符可以在1到4个字节之间,则具有50 000个字符的字符串的大小将是从50 000到200 000字节,或从~48kb到195kb.

  • 我们可以超越这个最大限制吗?我希望在我的应用程序中使用更多内容。 (3认同)
  • 它用于标题的大小。GET URL长度是否有限制 (3认同)

And*_*edt 6

更新

在新版本的NodeJS(v12.6.0 +)中,默认情况下标头请求大小限制为8kb,这也会影响响应标头大小。要使用8KB以上的标头大小,可以使用开关--max-http-header-size 65535(或所需的任何大小)。这是深入描述在这里

  • @ user1063287我把它放在package.json中的命令之后-node --max-http-header-size 1048576。/ bin / www` (2认同)