Как сделать объект облачного хранилища Google общедоступным при его загрузке? - PullRequest
1 голос
/ 11 апреля 2019

У меня есть приложение, которое загружает объекты в облачное хранилище Google с использованием подписанных URL-адресов, и я хотел бы знать, возможно ли сделать объект общедоступным на этапе подписи / загрузки.

Я знаю, что можно сделать объект публично видимым, установив политику в его корзине или используя клиентскую библиотеку / сделав запрос REST после его загрузки, но чтобы минимизировать влияние на мой рабочий процесс, я бы нравится делать все это за один раз. Это возможно? Если это возможно, я предполагаю, что это путем установки заголовка при подписании URL-адреса или при выполнении запроса REST с использованием подписанного URL-адреса, но я не смог найти документацию, которая охватывает это.

UPDATE:

Я только что нашел раздел расширений / пользовательских заголовков документации XML API , в котором утверждается, что этого можно достичь с помощью заголовка x-goog-acl (например, x-goog-acl: public-read). К сожалению, это не работает. Объект не отображается публично после установки заголовка при подписи URL-адреса и при загрузке файла.

1 Ответ

1 голос
/ 11 апреля 2019

Цитируя документацию Cloud Storage относительно подписанных URL-адресов :

При указании пар name:value для заголовков имейте в виду следующее:

  • Удалите все пробелы вокруг двоеточия, которые появляются после имени заголовка.

Например, при использовании настраиваемого заголовка x-goog-acl: private без удаления пробела после двоеточия возвращается ошибка 403 Forbiddenпотому что вычисляемая вами подпись запроса не совпадает с подписью, которую вычисляет Google.

Таким образом, решение могло бы установить значение заголовка как x-goog-acl:public-read вместо x-goog-acl: public-read.

...