Через три дня произойдет сбой загрузки URL-адресов в облачном хранилище, возможно, из-за Content-Type? - PullRequest
0 голосов
/ 19 марта 2019

Мои подписанные URL-адреса загрузки из моего облачного хранилища завершаются неудачно через три дня. Я думаю, что я исправил проблему, поэтому этот вопрос может быть решением для других. Спросите меня через три дня, сработало ли это решение!

Вот полное сообщение об ошибке:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
</Message>
<StringToSign>
GET 1742169600 /languagetwo-cd94d.appspot.com/Audio%2FSpanish%2FLatin_America-Sofia-Female-IBM%2Fagua.mp3
</StringToSign>
</Error>

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

file.getSignedUrl({
  action: 'read',
  expires: '03-17-2025', 
  contentType: 'audio/mp3'
})

Дата истечения срока действия в URL-адресах для загрузки - 17 марта 2025 года, так что это не проблема.

Документация Google по Подписанные URL говорит, что синтаксис Content_Type. В документации IETF для content-type говорится, что синтаксис Content-Type. Я пытался

file.getSignedUrl({
    action: 'read',
    expires: '03-17-2025',
    content_type: 'audio/mp3'
})

и мои файлы загружаются и воспроизводятся. Я не хочу ждать три дня, чтобы увидеть, продолжают ли они работать, поэтому, пожалуйста, дайте мне знать, если что-то еще нужно исправить!

Просто ради ухмылки я попробовал

file.getSignedUrl({
    action: 'read',
    expires: '03-17-2025',
    content-type: 'audio/mp3'
})

и firebase deploy не примут код. Дефис не разрешен в ключах.

Документация Google по подписанным URL-адресам гласит

As needed. If you provide a content-type, the client (browser) must provide this HTTP header set to the same value.

As needed отличается от Optional.

Мои .mp3 файлы и мои .webm URL-адреса для загрузки не работают, поэтому не имеет значения, какое содержимое файлов.

1 Ответ

0 голосов
/ 22 марта 2019

Три дня спустя мои URL для загрузки все еще работают. Похоже,

file.getSignedUrl({
    action: 'read',
    expires: '03-17-2025',
    content_type: 'audio/mp3'
})

ответ.

...