node.js - 使用 AWS 上的无服务器框架发送响应 header

标签 node.js amazon-web-services aws-lambda serverless-framework

我在 AWS 上使用无服务器框架来执行 Lambda 函数。如何发送授权 header ?我当前的配置:

Lambda 函数:

module.exports.createUser = (event, context, callback) => {

     let response = {
            statusCode: 302,
            headers: {
                "Authorization": userUtil.getToken(userId)
            },
            body: ""
        };
    callback(null, response);
    return;
}

serverless.yml:

createUser:
    handler: functions/user.createUser
    events:
      - http:
          path: users
          method: post
          cors: true
          integration: lambda

上述配置将响应对象作为正文发送。状态仍为 200。

我正在使用无服务器 v1.10

最佳答案

如果您想在代码中设置状态代码、 header 和正文,而不是将它们添加到配置中,则需要使用 Lambda 代理设置。查看更多here .

Lambda-proxy 是默认类型。因此,您需要删除 serverless.yml 中的 integration: lambda。另外,删除 cors: true 设置并修改 handler.js 以添加 CORS header 。

将您的 Lambda 函数修改为:

module.exports.createUser = (event, context, callback) => {

    let response = {
        statusCode: 302,
        headers: {
            "Authorization": userUtil.getToken(userId),
            "Access-Control-Allow-Origin" : "*", // Required for CORS support to work
            "Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS 
        },
        body: ""
    };

    callback(null, response);
    return;
}

将您的 serverless.yml 文件修改为:

createUser:
    handler: functions/user.createUser
    events:
      - http:
          path: users
          method: post

关于node.js - 使用 AWS 上的无服务器框架发送响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43888228/

相关文章:

amazon-web-services - 每个 AWS Lambda 的最大事件源映射数是多少?

python - 如何使用事件触发的 lambda 从 S3 存储桶中获取最新的文件名或文件

javascript - 停止监听请求库中的完整事件

node.js - 在主机服务器上部署nodejs网站

hadoop - 创建没有公网 IP 地址的 EMR 集群

amazon-web-services - 创建 CloudFormation 模板以创建多个 Glue 连接

javascript - React - 开发和生产中的环境变量

javascript - Nodejs 全局变量和模块

ruby-on-rails - 使用 AWS Elastic Beanstalk 部署 Rails ActionCable

amazon-web-services - 为什么我无法从 AWS Lambda 运行我的 ECS 任务?