Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавить callback-функцию при переименовании портала для ветки 1.x #249

Closed
mesilov opened this issue Jan 15, 2022 · 0 comments · Fixed by #251, #252 or #253
Labels
1.x issue related with 1.x sdk version 💰 sponsored задача оплачена

Comments

@mesilov
Copy link
Owner

mesilov commented Jan 15, 2022

юзерстори
https://dev.1c-bitrix.ru/rest_help/rest_sum/change_domen.php

Как вы, наверное, знаете, новые облачные Битрикс24 создаются по сгенерированным адресам вида b24-xxx.bitrix24.yy. И в дальнейшем, пользователи имеют возможность изменить этот адрес в любой момент (с некоторыми ограничениями в зависимости от используемого тарифного плана).

Почему это важно иметь в виду? Если ваше приложение делает вызов REST Битрикс24 и при этом использует сохраненный на стороне приложения адрес, то может возникнуть ситуация, когда этот адрес уже не актуален.

В случае обращения по неактуальному адресу, Битрикс24 делает редирект на новый, но такой редирект нужно корректно обрабатывать в своем коде.

Скорее всего, при использовании GET-параметров в вызовах REST, вы просто ничего не заметите, но вот с POST-запросами все несколько сложнее.

В частности, если вы используете PHP и curl, то в зависимости от настроек, POST-запрос при редиректе может «магическим образом» превратиться в GET-запрос, при этом параметры, передававшиеся в POST-запросе попросту теряются.

Существуют два подхода:

Выполняя POST-запрос запретить редирект, получить статус запроса 302, взять из результата новый адрес и повторить POST-запрос, но уже по новому адресу. Например, так можно делать в приложениях на Python:
response = requests.post(url, allow_redirects=False)
if response.status_code == 302:
response = requests.post(response.headers['Location'])
Использовать опцию curl_setopt($ch, CURLOPT_POSTREDIR, 3), которая позволит обработать ситуацию с редиректом.

Для удобства разработчиков просят добавить callable обработчик этого события

@mesilov mesilov added 1.x issue related with 1.x sdk version 💰 sponsored задача оплачена labels Jan 15, 2022
@mesilov mesilov closed this as completed Jan 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.x issue related with 1.x sdk version 💰 sponsored задача оплачена
Projects
None yet
1 participant