从 Lambda@Edge 函数获取客户端请求域
Getting the client request domain from Lambda@Edge function
我正在尝试为 HTTP 301 重定向执行类似下面的操作,以便网络用户将重定向到不同的新闻页面。
if ((request.uri == "/news") || (request.uri == "/news/") && (request.origin.domainName == "sub.mydomain.com")) {
const redirectResponse = {
status: '301',
statusDescription: 'Moved Permanently',
headers: {
'location': [{
key: 'Location',
value: '/local-news/',
}],
'cache-control': [{
key: 'Cache-Control',
value: "max-age=3600"
}],
},
};
callback(null, redirectResponse);
}
但是,似乎这个 request.origin.domainName == "mydomain.com" 部分在我的函数中不起作用。这是选择客户端来自的域名的正确方法吗?
我认为此 request.origin.domainName 方法将不起作用,因为 Origin 对象仅支持 Origin 请求。有没有可能,我可以获得 Viewer 请求?
的客户端的域名
我需要这个的原因是,我有多个域,用户访问相同的 CloudFront 分配。因此,当用户来自不同域时,必须将用户重定向到不同的新闻站点。
有人可以支持我吗?
如果要获取分配域名
const distributionDomain = event.Records[0].cf.config.distributionDomainName;
您可以在 AWS Documentation
中找到更多信息
另外,检查
还有,试试这个
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
const request = event.Records[0].cf.request;
const hostHeader = request.headers['host'][0].value;
callback(null, response);
};
hostHeader
应该是CNAME(域名)
更多信息here
我正在尝试为 HTTP 301 重定向执行类似下面的操作,以便网络用户将重定向到不同的新闻页面。
if ((request.uri == "/news") || (request.uri == "/news/") && (request.origin.domainName == "sub.mydomain.com")) {
const redirectResponse = {
status: '301',
statusDescription: 'Moved Permanently',
headers: {
'location': [{
key: 'Location',
value: '/local-news/',
}],
'cache-control': [{
key: 'Cache-Control',
value: "max-age=3600"
}],
},
};
callback(null, redirectResponse);
}
但是,似乎这个 request.origin.domainName == "mydomain.com" 部分在我的函数中不起作用。这是选择客户端来自的域名的正确方法吗?
我认为此 request.origin.domainName 方法将不起作用,因为 Origin 对象仅支持 Origin 请求。有没有可能,我可以获得 Viewer 请求?
的客户端的域名我需要这个的原因是,我有多个域,用户访问相同的 CloudFront 分配。因此,当用户来自不同域时,必须将用户重定向到不同的新闻站点。
有人可以支持我吗?
如果要获取分配域名
const distributionDomain = event.Records[0].cf.config.distributionDomainName;
您可以在 AWS Documentation
中找到更多信息另外,检查
还有,试试这个
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
const request = event.Records[0].cf.request;
const hostHeader = request.headers['host'][0].value;
callback(null, response);
};
hostHeader
应该是CNAME(域名)
更多信息here