Estoy usando el nodo js como proxy inverso principalmente usando el módulo http y http-proxy. Al enviar la solicitud a nodejs para redirigir a una de mis aplicaciones, tengo que pasar los encabezados de solicitud que estarán en mayúsculas. Sin embargo, nodejs o más bien http está convirtiendo todas las mayúsculas en minúsculas, por lo que una de las validaciones de mi aplicación está fallando.
Mi fragmento de código es:
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);Los encabezados de solicitud aprobados son:
curl -H "X-AUTH: PBxqcEm5sU743Cpk" -X GET http://localhost:8080/healthAhora lo que sucede es que el encabezado "X-AUTH" se transforma en "x-auth" y mi aplicación no puede validarlo. En mi aplicación, la coincidencia del encabezado distingue entre mayúsculas y minúsculas.
Los encabezados de solicitud impresos desde el objeto de solicitud del nodo js son:
{ host: 'localhost:8080', 'user-agent': 'curl/7.47.1', accept: '*/*', 'x-auth': 'PBxqcEm5sU743Cpk' }Mi requisito es conservar las mayúsculas del encabezado pasado en la solicitud para que mi aplicación pueda validarlo y autorizarlo. Por favor, hágamelo saber si hay alguna manera de lograr esto
Muchas gracias
Los nombres de campo de encabezado FWIW HTTP no distinguen entre mayúsculas y minúsculas , por lo que el caso realmente no debería importar.
Sin embargo , el nodo proporciona acceso a los encabezados sin procesar (incluidos los duplicados) a través req.rawHeaders . Dado que req.rawHeaders es una matriz (el formato es [name1, value1, name2, value2, ...] ), deberá iterar sobre él para encontrar los encabezados que está buscando.