我将s3资源映射到了Cloudfront中以缓存图像,但我尝试不成功地重定向到另一个页面。
cloufront URL在下面类似
product_images / 1/7895000483853 / 7895000483853_1_1_1200_72_RGB.png-> s3对象 pid = 12&cmid = 12&hash = 12314121cwdfiwjdif->网址中的参数
当找不到pid,cmid或其他参数时,我需要进行块显示或下载由clound映射的s3图像。
我创建了一个lambda边缘并在cloudfront触发器中设置了行为,但是页面没有重定向。
我的lambda代码就像下面这样:
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
console.log("request.uri " + request.uri);
console.log("request.querystring " + request.querystring);
console.log("##############################################");
console.log("################# CLOUDFRONT S3 #############################");
console.log("##############################################");
if (request.querystring.includes("pid") && request.querystring.includes("cmid")) {
console.log("OK contains params");
callback(null, request);
return;
}else{
console.log("ERROR not contains params");
const redirectResponse = {
status: '403',
statusDescription: 'Not Allowed',
headers: {
'location': [{
key: 'Location',
value: '/403/index.html',
}],
'cache-control': [{
key: 'Cache-Control',
value: "max-age=3600"
}],
},
};
console.log("Redirecting");
callback(null, redirectResponse);
}
};
答案 0 :(得分:0)
页面未重定向
您没有返回重定向,而是返回status: '403'
,这是一个错误响应,表示Forbidden
。在这种情况下,Location
标头没有任何意义。
假设您要重定向,请将status
代码更改为302或307。我不确定,因为重定向(根据定义)会更改浏览器地址栏中的URL。