小编Shi*_*aur的帖子

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)

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

非常感谢

node.js

7
推荐指数
1
解决办法
3521
查看次数

Lambda链接-使用Terraform从另一个Lambda调用Lambda

我试图从另一个调用一个AWS Lambda并执行Lambda链接。这样做的基本原理是,AWS不提供来自同一S3存储桶的多个触发器。

我创建了一个带s3触发器的lambda。第一个lambda的Java代码将侦听S3事件,并包含另一个lambda的调用。第二个lambda将从第一个lambda调用。两种lambda的创建都是通过terraform完成的。

Lambda A具有S3触发器。这将在特定存储桶上的S3事件上调用。Lambda A将进行处理,并使用调用请求来调用LambdaB。来自Lambda A的Lambda B调用Java中的代码是:

public class EventHandler implements RequestHandler<S3Event, String> {
  @Override
  public String handleRequest(S3Event event, Context context) throws RuntimeException {
    InvokeRequest req = new InvokeRequest()
    .withFunctionName("LambdaFunctionB")
    .withPayload(json);
    return "Lambda B invoked"
  }
}
Run Code Online (Sandbox Code Playgroud)

两个lambda都是使用terraform创建的。以下脚本:
Lambda terraform:

module "lambda_function" {
   source = "Git Path"
   absolute_artifact_path = "../lambda.jar"
   lambda_function_name = "LambdaFunctionA"
   lambda_function_description = ""
   lambda_function_runtime = "java8"
   lambda_handler_name = "EventHandler"
   lambda_execution_role_name = "lambda-iam-role"
   lambda_memory = "512"
   dead_letter_target_arn = "error-handling-arn"

}

resource "aws_lambda_permission" "allow_bucket" {
  statement_id  = "statementId" …
Run Code Online (Sandbox Code Playgroud)

aws-lambda terraform terraform-provider-aws

0
推荐指数
1
解决办法
83
查看次数