У меня есть облачный интерфейс AWS перед корзиной S3, содержащей мое внешнее приложение (https://myapp.com). Когда я перехожу к https://myapp.com/experts?profession=carpenter через элементы навигации моего сайта (кнопка в данном случае), все работает нормально. Но когда я пытаюсь получить доступ к этому же URL-адресу, вручную введя URL-адрес из панели навигации браузера, возникает проблема. Параметры запроса исчезают, и только на панели навигации отображается следующий URL-адрес без параметров запроса https://myapp.com.com/experts.
Мой вопрос: как мне настроить облачный фронт AWS, чтобы я мог передавать параметры запроса?
Большое спасибо!





Для веб-распространений вы можете выбрать, хотите ли вы, чтобы CloudFront пересылал строки запроса в ваш источник, и, если да, следует ли кэшировать ваш контент на основе всех параметров или на основе выбранных параметров.
По умолчанию Cloudfront не пересылает строки запроса, чтобы повысить частоту попаданий в кэш.
Вы можете изменить эти параметры в определении поведения, как показано на снимке экрана ниже.
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html
Теперь (12/2021) у AWS есть способ разные управлять этим в соответствии с ответом @lahiru-chandima.
Теперь у AWS есть другой способ настройки, который выбран по умолчанию. Метод, который Себастьен упомянул в своем ответе, помечен как «Устаревшие настройки кеша».
поэтому мы должны выбрать Cache poilcy и политику запроса источника и выбрать AllViewer?
@ChauGiang Установка политики запроса источника на AllViewer достаточна для сохранения параметров запроса, но установка политики кэширования на Caching Disabled также имеет смысл, если вы обслуживаете динамический контент, где кэширование нежелательно.
В дополнение к вышесказанному мне также пришлось добавить косую черту в конце запрошенного ресурса. Поэтому вместо .../newsletter/verify?id=1234 мне пришлось использовать .../newsletter/verify/?id=1234. Я считаю, что это связано с тем, как S3 разрешает путь к ресурсу, но я приветствую более конкретное объяснение.
Дополнительное примечание: некоторые параметры строки запроса зарезервированы S3, и могут быть добавлены новые, которые вызовут проблемы с вашим приложением, поскольку они не предназначены для S3, но теперь, когда вы, он попытается интерпретировать любые совпадающие. Примеры общих слов, которые сломают ваше приложение, если они будут использованы здесь:
locationиselect. Если вы собираетесь это сделать, рекомендуется называть параметры, начинающиеся сx-, а неx-amz, поэтому, например.?x-profession=carpenterпотенциально более надежен (хотя, по общему признанию, слово «профессия» похоже на то, что S3 вряд ли понадобится в будущем).