node.js - HTTP header 大小写

标签 node.js

我正在处理服务器,它不接受未大写的 header ,不幸的是我不能用它做太多事情。

var headers = {};
headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36';
headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
headers['Connection'] = 'keep-alive';
headers['Cache-Control'] = 'max-age=0';
headers['Upgrade-Insecure-Requests'] = '1';
headers['Accept-Encoding'] = 'gzip, deflate';
headers['Accept-Language'] = 'en-US,en;q=0.9,ru;q=0.8,hy;q=0.7';

request.post({url: 'http://10.10.10.10/login', headers: headers, ...

这实际上发出了以下内容

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,ru;q=0.8,hy;q=0.7
DNT: 1
host: 10.10.10.10
cookie: vvv=765936875155218941

cookiehost 是小写的。如何更改 request 以发送大写 header ?

最佳答案

这不是 Node.js 问题,而是特定库 request 的假定问题。事实上,这根本不是问题,因为 HTTP headers are case-insensitive . request 使用 caseless 包来强制小写 header ,因此如果需要一致性,预计用户 header 将是小写的。

这些 header 可以保留原样,因为它们应该由远程服务器根据规范正确处理。

如果请求应该模仿真实的客户端请求,则可能需要特定的 header 大小写。在这种情况下,可以在请求之前手动遍历 header 对象,例如:

const normalizeHeaderCase = require("header-case-normalizer");

const req = request.post('...', { headers: ... });

for (const [name, value] of Object.entries(req.headers)) {
    delete req.headers[name];
    req.headers[normalizeHeaderCase(name)] =  value;
}

req.on('response', function(response) {...});

关于node.js - HTTP header 大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51263607/

相关文章:

node.js - Node 预呈现器处理第一页加载 - 后续加载时出现 500 错误

bash - 从文件夹外部执行 Node.js 文件会破坏文件路径

javascript - 错误 : Cannot use GraphQLSchema "[object GraphQLSchema]" from another module or realm

javascript - 警告 : Functions are not valid as a React child. ReactJS

javascript - 发送电子邮件时出现 Node.js 404 错误,忽略了我的 res.status

javascript - Node.js:变量范围在 Electron 和非 Electron 脚本中的行为不同

node.js - 幻影 JS + Docker : html font-family is not respected when converting from HTML

javascript - 无法连接到 Azure 中的 MongoDB

c++ - 使用 node-gyp 预定义变量 PRODUCT_DIR

mysql - Node +SQL列不能为空