Как убедиться, что мой CDN кэширует запросы CORS по происхождению?

В настоящее время я использую Akamai в качестве CDN для своего приложения, которое обслуживается несколькими поддоменами.

Недавно я понял, что Akamai кэширует запросы CORS одинаково, независимо от источника, из которого они были запрошены.

Это, конечно, приводит к тому, что клиенты, которые делают запросы с другим Origin, чем кешированный ответ, терпят неудачу (поскольку у них есть другой заголовок ответа для Access-Control-Allow-Origin, чем они должны)

Многие предлагают указать заголовок запроса Vary: Origin, чтобы избежать этой проблемы, но согласно документации Akamai и это сообщение сообщества Akamai, это не поддерживается Akamai.

Как я могу заставить Akamai кэшировать вещи уникальным образом по Origin, если в запросе присутствует заголовок Origin?


person Brad Parks    schedule 21.03.2018    source источник


Ответы (2)


Я провел некоторое исследование, и оказалось, что это можно сделать, добавив новый Rule в вашу конфигурацию Akamai, например:

Обратите внимание, что если вы сделаете это — ПОМНИТЕ — это изменит ваш ключ кэша в Akamai, так что все, что было кэшировано ранее, по сути, больше НЕ КЭШИРУЕТСЯ! Кроме того, как указано в желтых предупреждающих метках, это может затруднить принудительный сброс кеша с помощью инструментов очистки URL-адресов Akamai. Вы можете удалить блок If и просто включить заголовок Origin в качестве аналогичного правила Cache ID Modification, если вы согласны с изменением ключа кеша для всего вашего контента, к которому будет применяться это правило.

Короче говоря, сначала попробуйте это на небольшом разделе вашего сайта!

Более подробную информацию можно найти в этой статье о переполнении стека.

введите здесь описание изображения

person Brad Parks    schedule 21.03.2018

Мы разместили API на Akamai. У меня было подобное требование, но мы хотели использовать кешированный ответ на Akamai для всех точек взаимодействия. Но без настроек CORS он кэшировал ответ от первого источника, а затем сохранял его в кеше, а следующие запросы от других точек касания терпели неудачу из-за кэшированного заголовка источника.

Мы решили проблему с помощью функции API Gateway, предоставляемой Akamai. Вы можете найти его в разделе «Определение API». Здесь также можно определить пользовательские параметры кэша. См. снимок экрана с настройками CORS. Теперь он кэширует ответ от бэкэнда и передает запросчику в соответствии со списком разрешенных источников.

Настройка CORS в определении API

person Yash    schedule 02.07.2020