[英]Fix Cloudfront 403 Access Denied request errors when using Lambda@Edge for pretty URLs
[英]The request cloud not be satisfied in rewrite at lambda@edge
我想在 lambda@egde 中重写。
尝试浏览时出现错误: https://example.com/foo
这是我的 function:
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
if (/^\/foo($|\/)/.test(request.uri)) {
request.uri = "https://api.example.com/bar";
}
callback(null, request);
};
我想重写(而不是重定向)。 这段代码有什么问题?
您正在将 URI 更改为用户请求的绝对路径,它应该只是请求的路径部分。
所以下面是这应该变成的样子。
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
if (/^\/foo($|\/)/.test(request.uri)) {
request.uri = "/bar";
request.headers['host'] = [{ key: 'host', value: "api.example.com"}];
}
callback(null, request);
};
如果您想更改域,则需要修改主机 header。
请记住这个例子,它只会在到达源头之前重写 URI。 如果您希望用户请求更改,则需要执行重写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.