HTTP авторизация на сайте через POST запрос #797632


#0 by nikolas260579
Здравствуйте. Формирую POST-запрос для авторизации на сайте. Надо программно ввести логин/пароль и нажать кнопку "Войти". Конечная цель - получить оттуда отчёт в Экселе и обработать его в 1С. При авторизации мне возвращается в HTTP - ответе код состояния 302 (также, как когда выполняю этот запрос прямо в Firefox-е), но 1С, в отличие от браузера, в заголовке ответа "Location" возвращает ошибку 404. В чём может быть дело? Запрос на авторизацию такой: Может, тут где ошибка? Тело запроса я скопировал из браузера. Заголовок запроса сейчас пока оставил один - Заголовки.Вставить("Content-Type","application/x-www-form-urlencoded"); Исследую эту же страничку через Хром - там в необработанных данных  тело запроса. Кто что посоветует? Первый раз работаю с HTTP. Заранее спасибо.
#1 by Ц_У
навскидку, а 1с работает с ххтпс?
#2 by nikolas260579
Вроде о общем модуле есть для ЕГАИСА процедуры, там GET
#3 by ELEA26
конечно!
#4 by ELEA26
ЗащищенноеСоединениеOpenSSL - как инициализировано? Хотя бы: ЗащищенноеСоединениеOpenSSL = Новый ЗащищенноеСоединениеOpenSSL( ? %40 - точно проходит? Почему не @? Это в браузере %40 надо, а в строке 1С вроде @ разве не прокатывает. Не уверен правда. "выполняю этот запрос прямо в Firefox-е" - Как ты из браузера POST делаешь? Может GET? Новый HTTPЗапрос(";,Заголовки) надо: Новый HTTPЗапрос("/",Заголовки) т.к. домен в Соединении уже есть.
#5 by ELEA26
HTTPЗапрос.УстановитьТелоИзСтроки - проверь 2й параметр: КодировкаТекста.UTF8 (ну или может еще какая кодировка).
#6 by nikolas260579
Как ты из браузера POST делаешь? Может GET? В консоли - сеть, дальше вижу метод, там пост с 302 кодом. Делаю изменить и отправить. Там всё нормально отрабатывает, в location получаю нужную страницу.
#7 by nikolas260579
%40 - точно проходит? Почему не @? Это в браузере %40 надо, а в строке 1С вроде @ разве не прокатывает. Не уверен правда. Вообще вернуло одинаково. В редиректе ошибка 404.
#8 by nikolas260579
надо: Новый HTTPЗапрос("/",Заголовки) т.к. домен в Соединении уже есть. А вот за это спасибо!!! А то я два дня туплю уже. Сработало!
#9 by nikolas260579
Подниму тему. Авторизация прошла нормально. Теперь на странице, куда меня перенаправило, мне нужно перейти на следующую закладку и нажать там кнопку формирования отчёта. Делаю следующее: на той закладке, где кнопка формирования отчёта, делаю новое соединение: Затем выполняю GET-запрос (Куки я получил в заголовках ответа с пост-запроса авторизации: и в коде состояния получаю 401 - не авторизован. Нужно ли каждый раз на каждый запрос новое соединение? Нужно ли писать GET запрос при переходе на другую закладку на той странице, куда меня перенаправил пост-запрос? Я так думаю, что я где-то какую-то последовательность упустил, поэтому и получаю дальше 401 код?
#10 by oleg_km
Не нужно. Просто формируй новый запрос и отправляй на обработку. Куки должны вроде сами сохраняться между запросами
#11 by nikolas260579
Спасибо. Сравнил куки запросов и ответов. Ответ с пост-запроса присылает Set-Cookie, в которых есть ид сессии и кук ASPXAUTH, который, я так думаю, и ответственный за авторизацию в пределах сессии. Если я его вытащу из ответа в виде строки и передам через Заголовки.Вставить("Cookie",МояСтрокаАвторизации), то он добавится к тем кукам, которые ходят между запросами? Кук ид сессии, как я вижу в браузере, у меня сам сохраняется между запросами.
#12 by nikolas260579
разобрался, в Куки надо чистые куки из set-cookie передавать, без всяких частей и слэшей.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С