Почему Cache-Control не работает для подписанных URL-адресов? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь создать подписанный URL-адрес, содержащий заголовок cache-control, используя подписанные URL-адреса V2.

При создании такого URL-адреса этот URL действителен и работает.

        String signature = "PUT" + "\n" +
                "\n" +
                contentType + "\n" +
                expiresWhen + "\n" +
                "x-goog-acl:public-read" + "\n" +
                path;

Но когда я добавляю заголовок cache-control, я получаю 403 при попытке загрузить:

        String signature = "PUT" + "\n" +
                "\n" +
                contentType + "\n" +
                expiresWhen + "\n" +
                "cache-control:public,max-age=600" + "\n" +
                "x-goog-acl:public-read" + "\n" +
                path;

Единственное, что я изменил, это заголовки.Заголовки отсортированы по алфавиту, не содержат пробелов и разделены символом "\ n", поэтому все требования должны быть выполнены.Или я ошибся здесь?Я предполагаю, что public,max-age должен оставаться в этом порядке и не сортироваться.Вероятно, хорошо, если указано то же самое при загрузке.

Тогда я нашел этот вопрос Google Cloud Storage установил контроль кэширования с подписанной загрузкой URL-адресов , но я предполагаю, что он не применяется, потому что мы загружаемс сервера, а не из браузера.Правильно ли мое предположение?

1 Ответ

0 голосов
/ 07 июня 2019

Когда обработка обработанных URL-адресов в бэкэнде включена, Cloud CDN обеспечивает специальную обработку запросов с подписанными URL-адресами.В частности, запросы с параметром запроса Signature считаются подписанными.Когда такой запрос получен, Cloud CDN проверяет следующее:

Метод HTTP - GET или HEAD.Параметр Expires установлен на будущее время.Подпись запроса совпадает с подписью, вычисленной с использованием именованного ключа.

Если любая из этих проверок завершается неудачей, выдается ответ 403 Forbidden.

Как мы читали в комментарии Джона Хэнли: если вы используете CDN, Cache-Control игнорируется для подписанных URL-адресов.Я прикрепляю следующую ссылку:

https://cloud.google.com/cdn/docs/using-cdn

...