我正在运行一个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脚本。以下是代码和一些解释。