如何使用运行Lambda@Edge函数的 AWS Cloudfront 修改页面的 HTML?



我正在运行一个CloudFront分发版,它有一个Lambda@Edge

我想操作CloudFront所在页面的DOM。具体示例:在head内的页面中添加自定义脚本。

Cloudflare上,这可以在工作人员(大致相当于产品(中使用他们的HTMLRewriter类轻松完成。

如何在AWS CloudFront上执行此操作?

我的工作原理是:

  • 观察HTML页面的请求
  • 对响应的主体进行某种操作——将其解析到DOM对象中,并根据需要进行操作

我还没设法让它工作起来。对其他方法感兴趣,或者我错过了一些显而易见的东西。

在请求的主体上做一个replace,其中uri === '/',以修改HTML的字符串

我试过了,效果很好。

uri === '/'应该是HTML页面的请求。

因此,在我的特定情况下,我只是在该请求的body上做了一个replace(它是字符串化的HTML(:

body.replace(
`</head>`,
`<script>
console.log('my script')
</script></head>`
)

这起到了作用。

您还可以引入某种DOM解析库,以更优雅的方式进行这种操作。

我创建了一个方法,使用@lou1989响应在<header><body>中添加GTM脚本。以下是代码和一些解释。

最新更新