Amazon Cloudfront 支持 lambda 函数。
- 登录 AWS 管理控制台并打开 AWS Lambda 控制台
- 创建一个新的 lambda 函数
- 选择“Edge Nodge.js 4.3”作为语言
- 选择 cloudfront-modify-response-header 模板。
- 指定要应用函数的 CloudFront 分配和事件。
声称不被跟踪的资源的 Tk 标头字段的示例代码:
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
response.headers['Tk'] = 'N';
callback(null, response);
};
声称在同意下进行跟踪的资源的 Tk 标头字段的示例代码:
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
response.headers['Tk'] = 'C';
callback(null, response);
};
条件跟踪状态值 (TSV) 的示例代码:
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const response = event.Records[0].cf.response;
if (request.headers['DNT'] = '0') {
response.headers['Tk'] = 'T';
} else {
response.headers['Tk'] = 'N';
}
callback(null, response);
};
PS:答案大致基于(1)来自 S3 源的 Amazon CloudFront 上的 HSTS,https: //serverfault.com/questions/820939/hsts-on-amazon-cloudfront-from-s3-origin和(2)AWS Lambda @Edge(预览版)http://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html。另请参阅https://www.w3.org/TR/tracking-dnt/#tracking-status-value。