curl не может загрузить файл, но браузер может

1793
Vitaly Zdanevich

Пример URL-адреса: https://xxxxxxxxxx.s3.amazonaws.com/xxxx-xxxx-xxxx-xxxx/xxxxxxxxxxxxx/x?AWSAccessKeyId=AKIAIFKEBR4CLVTDYSLA&Signature=Kv%2B859dJ2eUmLgHdkT%2F625EeD1E1E1D1

Я пытался декодировать% XX, но безуспешно.

Также я пытался, aws s3 cp s3://xxxxxxxxxx/xxxx-xxxx-xxxx-xxxx/xxxxxxxx... - --recursiveно Streaming currently is only compatible with non-recursive cp commands- мне нужно для потоковой передачи нескольких файлов из S3.

Используя wgetя получаю те же 403.

URL от s3_client.generate_presigned_url.

0

2 ответа на вопрос

0
apocalysque

Используйте одинарные кавычки, чтобы убедиться, что любые потенциально специальные символы воспринимаются буквально.

[user@localhost ~]# curl 'https://xxxxxxxxxx.s3.amazonaws.com/xxxx-xxxx-xxxx-xxxx/xxxxxxxxxxxxx/x?AWSAccessKeyId=AKIAIFKEBR4CLVTDYSLA&Signature=Kv%2B859dJ2eUmLgHdkT%2F9nUJEeRM%3D&Expires=1922517562' 

Ключ одинарные кавычки.

Как выясняется - это не работает для всех случаев ... Любой другой трюк? Vitaly Zdanevich 6 лет назад 0
На какие случаи это не работает? Если вы делаете какую-либо переменную в URL, она не будет работать между одинарными кавычками. apocalysque 6 лет назад 0
-1
Vitaly Zdanevich

Ага, я обнаружил, что curl может загружать URL без /кавычек ( вместо% 2F), когда такой URL в "двойных кавычках".