ЕЧ
Size: a a a
ЕЧ
KK
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
requestbin.com - я несколько штук разных посмотрел, и все они не идеальные. Мало кто из них показывает "сырой" запрос в том виде как он пришёл. Все они его декодируют и по пути добавляют своего хлама. Например nginx (или что там у них на "фронте") добавляет какие-то служебные заголовки типа x-forwarded-for.nc - это то что нужно.БС
💭П
ЕЧ
💭П
in
in
DP
AT
💭П
БС
AS
БС
SB
💭П