在AWS上使用无服务器框架发送响应标头

时间:2017-05-10 09:15:20

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

我在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

1 个答案:

答案 0 :(得分:1)

如果要在代码中设置状态代码,标题和正文,而不是在配置中添加它们,则需要使用Lambda代理设置。查看更多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