PHP-клиент Google Storage: невозможно создать объект, разместив подписанный URL-адрес - PullRequest
0 голосов
/ 31 октября 2018

Мы используем метод Google \ Cloud \ Storage \ StorageObject signatureUploadUrl в серверной части для генерации URL-адресов загрузки для наших клиентов на основе JS, чтобы иметь возможность загружать данные в эти URL-адреса без необходимости аутентификации.

Этот URL-адрес затем извлекается клиентами, которые, в свою очередь, запускают возобновляемую загрузку , создавая объект хранения с запросом POST для получения upload_id, и последующие запросы PUT добавят к нему данные. использование этого upload_id в качестве фактора аутентификации.

Проблема, с которой мы сталкиваемся, заключается в том, что этот подписанный URL-адрес загрузки не работает должным образом: мы должны передать ему метаданные POST (имя файла, тип содержимого), чтобы получить upload_id, но этот запрос завершается неудачно с "SignatureDoesNotMatch" ».

Поскольку мы используем официальную клиентскую библиотеку PHP, мы понятия не имеем, что может произойти, чтобы это не работало.

1 Ответ

0 голосов
/ 22 декабря 2018

Вы пытались отправить заголовок типа контента вместе с вашими последующими запросами PUT? Поскольку сгенерированный подписанный URL для загрузки создается вместе с заголовком типа содержимого, последующие запросы PUT должны отправлять тот же заголовок.

Посмотрите здесь: google-cloud-php

options-> contentType: если вы укажете это значение, клиент должен предоставить этому HTTP-заголовку то же значение.

...