Задать вопрос
@gelosoft
Frontend-developer

Разрешаются ли «не экранированные» пробелы в полях(ключах) POST запроса в теле сообщения?

Контекст проблемы:
Реализовано взаимодействие с интернет-эквайрингом банка (модуль CMS, позволяющий производить оплату с помощью банковских карт). Ответ от эквайринга банка об успешности/неудачи оплаты приходит асинхронно от запроса об оплате, посредством сообщения POST методом на определенный url. Т.е инициатор POST-запроса не браузер, а какой-то программный код (скорее всего на Java).
Проблема:
Так вот от банка поля POST сообщения содержат пробелы до знака "=", (например, key =value&key2=value) что на стороне интернет-магазина (PHP) образует в $_POST ключи "key____" и "key2".
Вопрос:
Укажите, пожалуйста, какой-нибудь RFC или что-то аналогично правдивое, где бы писалось, что запрещено использовать пробелы в именах полей POST запроса.
  • Вопрос задан
  • 2662 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@eyeless_watcher
В вопросе явно не указано, но речь, судя по всему, идет о типе application/x-www-form-urlencoded, а не multipart/form-data
Про него пишут вот что:

www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1

Control names and values are escaped. Space characters are replaced by `+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by `%HH', a percent sign and two hexadecimal digits representing the ASCII code of the character. Line breaks are represented as "CR LF" pairs (i.e., `%0D%0A').

То есть да, пробелов в именах полей быть не должно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы