Как обеспечить, чтобы мой CDN кэшировал запросы CORS по происхождению?
В настоящее время я использую Akamai в качестве CDN для своего приложения, которое обслуживается несколькими поддоменами.
Недавно я понял, что Akamai кэширует CORS-запросы одинаково, независимо от источника, из которого они были запрошены.
Это, конечно, вызывает клиентов, которые делают запросы с другим Origin
чем кэшированный ответ на сбой (так как они имеют другой заголовок ответа для Access-Control-Allow-Origin
чем они должны)
Многие предлагают поставлять Vary: Origin
заголовок запроса, чтобы избежать этой проблемы, но согласно документам Akamai и этому посту сообщества Akamai, Akamai не поддерживает это.
Как я могу заставить Akamai кешировать вещи однозначно Origin
если Origin
заголовок присутствует в запросе?
1 ответ
Я провел некоторое исследование, и, похоже, это можно сделать, добавив новый Rule
в вашем конфиге Akamai вот так:
Обратите внимание, что если вы сделаете это - ПОМНИТЕ - это изменит ваш ключ кеша в Akamai, так что все, что было ранее кэшировано, по существу больше НЕ КЕШИТЕ! Кроме того, как отмечается в желтых метках предупреждений, это может усложнить принудительный сброс вашего кэша с помощью инструментов очистки URL-адресов Akamai. Вы можете удалить If
заблокировать и просто включить Origin
заголовок как аналог Cache ID Modification
Правило также, если вы согласны с изменением ключа кэша для всего вашего контента, к которому будет применяться это правило.
Короче, сначала попробуйте это в небольшом разделе вашего сайта!
Более подробную информацию можно найти в этом посте по переполнению стека
Мы разместили API на Akamai. У меня было аналогичное требование, но мы хотели использовать кешированный ответ на Akamai для всех точек взаимодействия. Но без настроек CORS он использовался для кэширования ответа от первого источника, а затем сохранения его в кеше, а следующие запросы от других точек взаимодействия использовались для сбоя из-за кешированного заголовка источника.
Мы решили проблему с использованием функции API Gateway, предоставляемой Akamai. Вы можете найти его в разделе "Определение API". Здесь также можно определить настраиваемые параметры кеша. См. Снимок экрана с настройками CORS. Теперь он кеширует ответ от бэкэнда и обслуживает запрашивающего в соответствии со списком разрешенных источников.