Closed leemuar closed 4 years ago
В старых версиях платформы нет функции СтрРазделить
. Видимо проблему нужно искать в вашей реализации этой функции
@leemuar
Пока закрываю
Да, действительно, я ошибся. Я думал в нашей платформенной СтрЗаменить() ошибка, оказалось что у нас есть своя функция СтрЗаменить в глобальном модуле, это ее поведение неправильное.
Портировали Коннектор на более старый режим совместимости - 8.3.11.2867, режим совместимости Версия 8.2.13.
Обнаружили, что некорректно формируется подпись AWS4 в случае когда запрос не содержит параметров (вида ?name=1&action=put)
Формируется неверный канонический запрос, канонические параметры запроса устанавливаются равными "=". Из за этого рассчитывается неверная подпись.
Пример правильного канонического запроса:
Пример неправильного канонического запроса, формируемого Коннектором на старой платформе:
Проблема в функции РазобратьURL(),
РазобратьURL("http://localhost/")
на старых версиях платформы вернет структуру, ключ "Параметры" которой будет содержать массив с одной пустой строкойВ новых версиях платформы
РазобратьURL("http://localhost/")
в "Параметры" возвращает пустой массивВ ЗаполнитьПараметрыЗапроса() когда Запрос равен пустой строке,
СтрРазделить(Запрос, "&", Ложь)
на старых версиях платформы возвращает массив, содержащий одну пустую строку. Из-за такого поведения канонические параметры формируются неверно. В новых версиях платформы СтрРазделить("", "&", Ложь) возвращает пустой массив, там библиотека работает корректноhttps://github.com/vbondarevsky/Connector/blob/322ab11cf29701d68935ee6f9ab9dbc6949436af/src/CommonModules/%D0%9A%D0%BE%D0%BD%D0%BD%D0%B5%D0%BA%D1%82%D0%BE%D1%80HTTP/Ext/Module.bsl#L1775