【问题标题】:Sending Response Header with the Serverless Framework on AWS在 AWS 上使用无服务器框架发送响应标头
【发布时间】:2017-10-08 20:26:11
【问题描述】:

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

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。

我正在使用 Serverless v1.10

【问题讨论】:

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


    【解决方案1】:

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

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

    将您的 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
    

    【讨论】:

    • 谢谢@Zanon。菜鸟失误!我应该读过 Lambda-proxy。
    猜你喜欢
    • 2017-10-05
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2017-10-17
    相关资源
    最近更新 更多