我将节点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)
我的要求是保留请求中传递的标头的大写字母,以便我的应用程序可以对其进行验证和授权。请让我知道是否有任何方法可以实现这一目标
非常感谢
FWIW HTTP标头字段名称不区分大小写,因此大小写确实无关紧要。
但是,node 确实通过提供了对原始标头(包括重复标头)的访问req.rawHeaders。由于req.rawHeaders是一个数组(格式为[name1, value1, name2, value2, ...]),因此您需要对其进行迭代以找到要查找的标头。
| 归档时间: |
|
| 查看次数: |
3521 次 |
| 最近记录: |