【发布时间】:2021-06-24 16:31:54
【问题描述】:
我有一个 lambda 函数,我希望执行从 https://foo.test.com/user_id/bar/ 到 https://app.test.com/user_id/new 的 301 重定向
用户的请求有一个设置为变量 (${userId}) 并传递给目标 URI (${newUri}) 的 user_id。
user_id的值是数字和字母(12-qw12)
我编写了以下代码,将 ID 设置为变量并将其传递给响应标头:
exports.handler = function handler(event, context, callback) {
let request = event.Records[0].cf.request;
let uri = request.uri;
let userId = uri.split('/')[3];
let newUri = `https://app.test.com/` + userId + `/new`;
const response = {
headers: {
'location': [{
key: 'Location',
value: newUri,
}],
},
status: '301',
statusDescription: 'Moved Permanently',
};
callback(null,response);
};
不幸的是,我从传递给响应标头的${userId} 中得到一个空值:
https://app.test.com//new
如果我将响应标头中的值作为字符串 (value: 'https://app.test.com/12-qw12/new') 写入,则它可以正常工作。
如何将变量 (${userId}) 传递到响应标头而不得到空值?
【问题讨论】:
标签: node.js redirect aws-lambda amazon-cloudfront