RB
Size: a a a
RB
SZ
KK
💭П
SA
aiohttp, который слал запросы в эту S3, и почему-то запросы не проходили проверку сигнатуры, хотя с Амазон S3 всё было отлично. И через curl или requests было всё ОК.requestbin.com и простой nc, посылая в них запросы по разному: через curl или через aiohttp.query string слеши кодирует "процентиками", хотя в эталонном запросе они были не экранированы (по стандарту их можно не экранировать в query string). Оказалось, что:yarl.URL(), который создавать с отключением "перекодирования". query string немного отличается от набора допустимого для canonical string, из которой считается подпись (она тоже кодируется с помощью url_encoding-а)query string как она есть, и считали от неё сигнатуру. В результате они её считали от закодированых слешей, а наш сервис считал от нормальных слешей. Амазон делает это более правильно - он сначала декодирует query string, а потом строит canonical string c кодированием по своим правилам - поэтому с ним у нас не было проблем.query string, т.к. есть несколько вариантов сделать это правильно. Всегда декодируйте его и потом кодируйте по своему, если это имеет значение.KK
💭П
RM
AM
MP
БС