Node.js不保留请求标头的大写

Shi*_*aur 7 node.js

我将节点js用作反向代理,主要使用http和http-proxy模块。在将请求发送到nodejs以重定向到我的应用程序之一时,我必须传递全部都是大写的请求标头。但是,nodejs或http会将所有大写字母转换为小写字母,因此我的应用程序验证之一失败。

我的代码段是:

http.createServer(function (request, response) {

    var redirection = 'http://localhost:8000';
    var path = url.parse(request.url).path;

    switch (path) {
        case '/health':
            proxy.web(request, response, { target: redirection });
            break;
}).listen(8080);
Run Code Online (Sandbox Code Playgroud)

传递的请求标头是:

curl -H "X-AUTH: PBxqcEm5sU743Cpk" -X GET http://localhost:8080/health
Run Code Online (Sandbox Code Playgroud)

现在发生的是,标题“ X-AUTH”已转换为“ x-auth”,而我的应用程序无法对其进行验证。在我的应用程序中,标头匹配区分大小写。

从节点js请求对象打印的请求标头是:

{ host: 'localhost:8080',
  'user-agent': 'curl/7.47.1',
  accept: '*/*',
 'x-auth': 'PBxqcEm5sU743Cpk' }
Run Code Online (Sandbox Code Playgroud)

我的要求是保留请求中传递的标头的大写字母,以便我的应用程序可以对其进行验证和授权。请让我知道是否有任何方法可以实现这一目标

非常感谢

msc*_*dex 7

FWIW HTTP标头字段名称不区分大小写,因此大小写确实无关紧要。

但是,node 确实通过提供了对原始标头(包括重复标头)的访问req.rawHeaders。由于req.rawHeaders是一个数组(格式为[name1, value1, name2, value2, ...]),因此您需要对其进行迭代以找到要查找的标头。