Access_token 在本地主机上工作而不在服务器上工作

Access_token works in localhost not in server

我在我的应用程序中使用以下代码来检查是否提供了某些 headers。该代码在本地主机中运行良好,但在将应用程序部署到服务器时却无法正常运行。基本上我正在尝试检查请求中是否存在 headers 。在服务器上,我不断收到无效请求。当我传递 accesstoken 而不是 access_token 时,请求成功通过。所以通过改变 if ((request.headers.access_token && request.headers.refresh_token && request.headers.id_token) || request.headers.token)

代码有效,我的问题是为什么会这样

const Hapi = require('hapi');
const Path = require('path');
const axios = require('axios');

    var tokenValidation = function (request, reply) {


            if ((request.headers.access_token && request.headers.refresh_token && request.headers.id_token) || request.headers.token) {

                if (request.headers.access_token != undefined) {
                   //do something
                    }
                    else {
                        return reply.continue();
                    }

                } else
                    return reply.continue();
            } 
            else {
                var err = Boom.badRequest(‘Invalid request.');
                reply(err);
            }
        }

        server.ext('onRequest', tokenValidation);

缺少(正在消失的)HTTP Headers 如果你没有显式地设置 underscores_in_headers on;,NGINX 将默默地删除带下划线的 HTTP headers(根据 HTTP 标准这是完全有效的)。这样做是为了防止在将 headers 映射到 CGI 变量时出现歧义,因为在此过程中破折号和下划线都映射到下划线。

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#missing--28disappearing-29-http-headers

我们必须在 NGINX 中显式 underscores_in_headers 开启,否则它们将被忽略