如何解决找不到查询参数时如何重定向或阻止Cloudfront网址
我将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);
}
};
解决方法
页面未重定向
您没有返回重定向,而是返回status: '403'
,这是一个错误响应,表示Forbidden
。在这种情况下,Location
标头没有任何意义。
假设您要重定向,请将status
代码更改为302或307。我不确定,因为重定向(根据定义)会更改浏览器地址栏中的URL。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。