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 变量时出现歧义,因为在此过程中破折号和下划线都映射到下划线。
我们必须在 NGINX 中显式 underscores_in_headers 开启,否则它们将被忽略
我在我的应用程序中使用以下代码来检查是否提供了某些 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 变量时出现歧义,因为在此过程中破折号和下划线都映射到下划线。
我们必须在 NGINX 中显式 underscores_in_headers 开启,否则它们将被忽略