【发布时间】:2020-09-01 19:23:02
【问题描述】:
我有一个简单的 HTML 文件,它加载了一个 json 文件,它就在它旁边。
我在Implementing Default Directory Indexes 关注了一些 AWS 文档,因为我的网站结构如下:
/apple/index.html /orange/index.html
并且我需要我的用户能够简单地访问 mydomain.com/apple 而无需添加 /index.html。
AWS post 中的 Lambda@Edge(已修改)函数运行良好,除了一个关键问题:每个 index.html 文件旁边都有一个 json 文件,并发出同源请求以加载 json 数据。
如果直接访问 /apple/index.html 这很好,但是如果你访问 /apple 的 HTML 文件无法加载 json 文件,它会得到 403 access denied 因为 Lambda@Edge 正在修改请求并且基本上将uri附加到自身。
如何在 Lambda 函数中更正此问题?
这是我实际使用的功能:
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const uri = request.uri;
if (uri.endsWith('/')) {
request.uri += 'index.html';
} else if (!uri.includes('.')) {
request.uri += '/index.html';
}
callback(null, request);
};
【问题讨论】:
标签: amazon-cloudfront aws-lambda-edge