GET. Ошибка 400. Нужно ли экранировать символы "_", "()"?

  • Автор темы Автор темы Hannes
  • Дата начала Дата начала

Hannes

Client
Регистрация
03.02.2016
Сообщения
554
Реакции
285
Баллы
63
Здравствуйте!

Вторые сутки не могу корректно выполнить GET запрос API (не оффициальное) на одном из сайтов. Прошу подсказать, в чём может быть проблема.

Захожу на страницу сайта, в сниффере PM запрос выполняется корректно.
Создаю запрос из корректно выполненного через "Создать действие из запроса" - результат такого кубика {"data":{"status":400},"included":[]}

Сравнивал 2 запроса - отличия только в том, что в созданном кубике есть параметры "Accept-Encoding: gzip, deflate" и "Host: www.site.com".

Сниффал через Burp (там через Repeater корректно запрос выполняется), выяснял, какие параметры критичны, какие авторостепенны, создавал кубик в PM руками... Ошибка 400

Content-Type: application/json в запрос добавлял (в заголовки).
Уникальных параметров в запросе нет. Через Burp выяснил, что для запроса достаточно корректных кук, Csrf-Token и в принципе всё, остальные параметры вспомогательны.


Единственные наблюдение получились таковым:
1. API запросы на сайте, где в url нет ()_ выполняются корректно, а там где есть эти символы - 400 ошибка. Может совпадение, но...
2. Возможно, проблема в кодировке. Пробовал utf-8/windows-1251

Идей своих уже нет. Форум перерыл. Надеюсь на ваши идеи.
 
А я понял что за сайт, сам ковыряюсь прямо сейчас и сталкивался ранее ;-)
Для экранирования ссылок/данных для запроса юзай Uri.EscapeDataString(), а не HttpUtility.UrlEncode() (он не экранирует скобки () )
Если не поможет - пробуй включить альтернативный способ передачи HTTP-запросов
 
  • Спасибо
Реакции: Hannes
Совершенно забыл, что в настройках проекта есть альтернативный метод http-запросов.
Включил альтернтивный метод - всё стало работать как нужно.

@up_lvl, @doc спасибо за помощь! :bt:

Я счастлив :D :dk:
 
Там прикол в том что обычный метод отрабатывает, словил только один запрос где не отрабатывало с обычным(подгрузка реплаев). Вот теперь думаю может это из-за скобок и неправильного метода экранирования всё-таки. Ты пробовал экранировать через Uri.EscapeDataString() до того как включить альтернативные запросы?
 
  • Спасибо
Реакции: Hannes
Мы похоже всё же про разные сайты говорим) С экранированием скобок выдавало ошибку, вроде 403
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)