Как я могу изменить HTML страницы с помощью AWS Cloudfront, выполняющего функцию Lambda@Edge? - PullRequest
0 голосов
/ 14 июля 2020

Я использую дистрибутив CloudFront, в котором работает функция Lambda@Edge.

Я хотел бы управлять DOM страницы, перед которой находится CloudFront. Пример Specifi c: добавить собственный скрипт на страницу внутри head.

На Cloudflare это можно легко сделать в рабочем (примерно эквивалентном продукте), используя их HTMLRewriter class .

Как я могу это сделать на AWS CloudFront ?

Моя рабочая теория:

  • Обратите внимание на запрос страницы HTML
  • Сделайте какие-то манипуляции с телом ответа - проанализируйте его в объекте DOM и при необходимости измените

У меня нет удалось заставить это работать еще. Заинтересованы в других подходах или я упускаю что-то очевидное.

1 Ответ

1 голос
/ 14 июля 2020

Сделайте replace в теле запроса, где uri === '/', чтобы изменить строку HTML.

Я пробовал это, и он отлично работает.

Запрос, где uri === '/' должен быть запросом для страницы HTML.

Итак, в моем конкретном случае c я просто сделал replace на body этого request (который преобразован в строку HTML):

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

И это сработало.

Вы также можете использовать какую-то библиотеку DOM-синтаксического анализа, чтобы выполнять такие манипуляции в более элегантная мода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...