微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“无法读取未定义的属性“标题”

如何解决“无法读取未定义的属性“标题”

我正在使用以下代码在 Lambda Edge 中设置会话标头以响应。但我总是收到这个错误

{
    "errorType": "TypeError","errorMessage": "Cannot read property 'headers' of undefined","stack": [
        "TypeError: Cannot read property 'headers' of undefined","    at Runtime.exports.handler (/var/task/index.js:118:30)","    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
    ]
}

我使用的代码是这个

exports.handler = function (event,config,callback) {
    const request = event.Records[0].cf.request;
    console.log(event.Records[0].cf);
    const response = event.Records[0].cf.response;
    const headers = response.headers;

    getConfigCached(request,function (err,config) {
        if (err) {
            callback(err,null);
        }
        else if (request.uri !== "/code" && !redirectIfNotAuthenticated(config,request,callback)) {
            callback(null,request);
        }
        else if (request.uri == "/code") {
            console.log('INSIDE CODE');
            let access_token = accesstokenCallback(request,callback);
            console.log(access_token);
            headers['session-token'] = [{ key: 'Session-Token',value: access_token }];
            callback(null,response);
        }
    });
};

CloudFront 触发器设置为查看者请求

解决方法

请检查您在创建 Lambda@Edge 时配置的设置。 它应该设置为 Response origin 以便您能够设置响应标头。

顺便说一句,有一个创建这种 Lambda@edge 的蓝图 AWS Blueprint

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。