Получение 403 при попытке загрузить на GCP подписанный URL, созданный с несколькими метаданными - PullRequest
1 голос
/ 23 января 2020

Я сгенерировал URL со знаком GCP с двумя значениями метаданных в заголовке.

Пример, 'x-goog-meta-reviewer': 'jane', 'x-goog-meta-author': ' jack '

Когда я пытаюсь загрузить файл на сгенерированный подписанный URL-адрес с метаданными, заданными в заголовке. Я получаю 403 запрещенных запроса.

Но интересная часть состоит в том, что тот же код работает нормально, если я просто задаю метаданные x-goog-meta-reviewer: jane в обоих заголовках.

Не можем ли мы отправить два значения метаданных при попытке загрузить файл в облако Google?

1 Ответ

0 голосов
/ 23 января 2020

При построении канонических запросов следует учитывать следующее для канонических заголовков:

1.Сделать все имена заголовков строчными.

2. Сортировать все заголовки по имени заголовка, используя лексикографическую сортировку по значению кодовой точки.

3. Разделить каждый заголовок новой строкой (/n).

4. Устранить повторяющиеся имена заголовков, создав одно имя заголовка с разделенным запятыми списком значений. Убедитесь, что между значениями нет пробелов, и убедитесь, что порядок списка через запятую соответствует порядку, в котором заголовки появляются в вашем запросе. Для получения дополнительной информации см. RF C 7230, раздел 3.2.

5.Замените все складывающиеся пробелы или символы новой строки (CRLF или LF) одним пробелом. Для получения дополнительной информации о сворачивании пробелов см. RF C 7230, раздел 3.2.4 ..

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

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

Поэтому Вы можете получить ошибку 403 Forbidden, если вычисляемая вами подпись запроса не совпадает с подписью, которую вычисляет Google.

...