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

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
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

Идей своих уже нет. Форум перерыл. Надеюсь на ваши идеи.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
  • Спасибо
Реакции: Hannes

up_lvl

Client
Регистрация
02.09.2014
Сообщения
131
Благодарностей
53
Баллы
28
А я понял что за сайт, сам ковыряюсь прямо сейчас и сталкивался ранее ;-)
Для экранирования ссылок/данных для запроса юзай Uri.EscapeDataString(), а не HttpUtility.UrlEncode() (он не экранирует скобки () )
Если не поможет - пробуй включить альтернативный способ передачи HTTP-запросов
 
  • Спасибо
Реакции: Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Совершенно забыл, что в настройках проекта есть альтернативный метод http-запросов.
Включил альтернтивный метод - всё стало работать как нужно.

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

Я счастлив :D :dk:
 

up_lvl

Client
Регистрация
02.09.2014
Сообщения
131
Благодарностей
53
Баллы
28
Там прикол в том что обычный метод отрабатывает, словил только один запрос где не отрабатывало с обычным(подгрузка реплаев). Вот теперь думаю может это из-за скобок и неправильного метода экранирования всё-таки. Ты пробовал экранировать через Uri.EscapeDataString() до того как включить альтернативные запросы?
 
  • Спасибо
Реакции: Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Мы похоже всё же про разные сайты говорим) С экранированием скобок выдавало ошибку, вроде 403
 

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