AWS Lambda 'Origin Request'将 CF 国家/地区'header'发送到浏览器



我正在为AWS Cloudfront编写"原始请求";

  • 获取cloudfront-viewer-country的值
  • 例如"NZ"或"AU">
  • 如果它有一个值,请将该值发送到浏览器响应,以便我们可以使用它

这是我所拥有的,感觉很接近,但我在线上遇到了错误

'use strict';
// Origin Request
exports.handler = (evt, ctx, cb) => {
var request = evt.Records[0].cf.request;
var response = evt.Records[0].cf;
const headers = request.headers;
if(headers['cloudfront-viewer-country']) {
response['headers']['cloudfront-viewer-country'] = (headers['cloudfront-viewer-country'] || [ { value: 'XX' } ]);
}
return cb(null, response);
};

当前错误:

TypeError: Cannot read property 'headers' of undefined

明白了。只需下面的。。。不是"原始请求",而是"原始响应"对我有效。基于:使用更改CloudFront响应lambda@Edge

// Origin Response
exports.handler = (evt, ctx, cb) => {
const request = evt.Records[0].cf.request;
const response = evt.Records[0].cf.response;
const value = request.headers['cloudfront-viewer-country'][0].value;
const key = request.headers['cloudfront-viewer-country'][0].key;
response.headers['cloudfront-viewer-country'] = [{key: key, value: value}];
return cb(null, response);
};

最新更新