HttpRequest и HttpResponse
Объект HttpRequest (Context::getCurrent()->getRequest()) инкапсулирует параметры запроса, предоставляя методы строгого чтения источников (getQuery(), getPost(), getJsonList()) и заголовков. При отправке cookie через Web\Cookie ядро по умолчанию добавляет префикс сайта, что требует внимания при работе с клиентскими скриптами.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
\Bitrix\Main\HttpRequest
-
2
\Bitrix\Main\HttpResponse
-
3
Получение параметров запроса
-
4
Формирование ответа
Материалы
Официальная документация
Проверь себя
В заявках с сайта поле «Комментарий» приходит обрезанным на первом символе меньше. Где искать причину?
В фильтре проактивной защиты: класс Request из модуля security реализует IRequestFilter и подключается к HttpRequest через addFilter(), вырезая то, что счёл XSS. У фильтра есть getChangedVars(), по нему видно, что именно изменилось.
Параметр id приходит и в адресе, и в теле формы с разными значениями. Что вернёт $request->get('id')?
Значение из POST: в конструкторе HttpRequest данные объединяются через array_merge, и POST перекрывает GET с тем же именем. Если нужен именно адрес — getQuery(), именно форма — getPost().
Cookie поставили через Web Cookie, а JavaScript не находит её по имени. Почему?
Конструктор Cookie по умолчанию добавляет к имени префикс из настройки главного модуля, обычно BITRIX_SM_. Либо передайте четвёртым аргументом addPrefix равным false, либо читайте её на сервере через getCookie(), который префикс учитывает сам.
Зачем в контроллере JsonPayload, если есть getPost()?
Тело с Content-Type application/json не попадает в POST-параметры. Для него у HttpRequest есть isJson() и getJsonList(), а в действиях контроллера тот же результат даёт автоваринг JsonPayload.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить