Обновление 2
Пересмотр вашей политики Интересно, как вы фактически разрешили CloudFront доступ к вашим объектам в первую очередь? Вы случайно последовали общему совету, например, Начните использовать CloudFront с Amazon S3 , что Вы должны убедиться, что для ваших объектов установлены разрешения Сделать все общедоступным для каждого объекта в корзине Amazon S3.
В этом случае вы могли бы наткнуться на связанную ловушку из-за взаимодействия между тремя доступными механизмами контроля доступа S3, что может быть довольно запутанным. Это решено, например, в Совместное использование ACL и политик сегментов :
Если у вас есть ACL и политики сегментов, назначенные сегментам, Amazon S3
оценивает существующие ACL-списки Amazon S3, а также политику корзины
при определении прав доступа учетной записи к Amazon S3
ресурс. Если учетная запись имеет доступ к ресурсам, которые ACL или политика
указывает, что они могут получить доступ к запрошенному ресурсу.
Следовательно, вам нужно будет перенести свой ACL в политику сегментов (то есть разрешить доступ к CloudFront до отказа через aws: referer ) и впоследствии удалить чрезмерно щедрый ACL.
Удачи!
Обновление 1
Хорошо, теперь, когда клиент кэширует путь, я боюсь, что это будет не тривиально (как видно при поиске aws: referer на форумах AWS), поэтому может потребоваться пара итераций (особенно если учесть, что вы уже изучили тему):
- Наиболее распространенной проблемой, с которой сталкиваются, является ведущая ошибка с пробелами в документации AWS (что особенно раздражает, поскольку простое исправление документации устранит много потерянного времени как для пользователей, так и для сотрудников службы поддержки AWS).
- Однако в вашей политике эта проблема не возникает, если вы очистили реальный домен, возможно, вы заменили ошибку в рабочем коде?
- Также важно понимать, что заголовок
HTTP referer
не обязательно будет доступен, см., Например. Referer скрывается (таким образом, ваша политика не предотвратит злонамеренный доступ в любом случае, хотя это, очевидно, не проблема)
- Вы уже заявили, что вы проверили его на отправку с помощью инструментов разработчика Chrome, поэтому это также не относится (я упоминаю об этом, чтобы подчеркнуть пониженный уровень безопасности).
С первого взгляда политика выглядит хорошо - прежде чем углубляться в это направление, я бы порекомендовал убедиться, что вы фактически успешно обходите кеш Chrome, что на общеизвестно менее прямолинейно , чем люди используют из других браузеров; в частности, Ctrl + F5
просто перезагружает страницу, , но не Обход кеша (по крайней мере, не надежно)!
Как и там задокументировано, вы можете использовать одну из других комбинаций клавиш Для перезагрузки страницы и обхода кеша (включая запутанный 2-й Ctrl + F5
после перезагрузки 1-го), однако я вместо этого рекомендуется использовать одну из следующих двух альтернатив:
- Инструменты разработчика Chrome предлагают выделенную поддержку для просмотра без кэша - в правом нижнем углу панели инструментов находится значок шестеренки для настроек, при нажатии которого запускается наложение с панелью параметров, среди которых вы найдете параметр Отключить кэш в разделе Сеть .
- Chrome Режим инкогнито (
Ctrl + Shift + N
) не позволяет Google Chrome хранить информацию о посещенных вами сайтах , что на сегодняшний день (может измениться в любое время, конечно) включать в себя кэшированный контент, файлы cookie, DNS и т. п., как и ожидалось, поэтому это еще более быстрый, хотя и менее явный вариант прямо сейчас.