Я столкнулся с проблемой: мой контроллер Symfony, выступающий в качестве обратного прокси-сервера для Apache Superset, прекращает обработку запросов на полпути. Когда я делаю прямые запросы к Superset, все работает нормально, но через прокси-сервер Symfony запросы не выполняются.
Я использую версию Apache Superset: 3.1.2
Что я пробовал:
Прямые запросы: прямые запросы к Superset из браузера работают отлично.
Обратный прокси через Symfony: запросы через обратный прокси-сервер Symfony останавливаются на полпути.
Журналы и отладка:Проверены журналы Symfony (var/log/dev.log или var/log/prod.log).
Нет четкого сообщения об ошибке, указывающего, почему запросы прекращаются.
Что я могу сделать? Необходимо:
Возможные причины: идеи о том, что может быть причиной остановки прокси-запросов на полпути.
Советы по отладке: как эффективно отладить эту проблему в Symfony.
Корректировки конфигурации: любая конфигурация в Symfony или Superset. это могло бы предотвратить эту проблему.
Будем очень благодарны за любую помощь или предложения!
Спасибо за вашу помощь.
На первом изображении ниже показаны прямые запросы к Apache. superset
[два других изображения отслеживают запросы обратного прокси-сервера через Symfony (http-клиент Curl) до момента их остановки, а также ошибку в консоли.]
( https://i.sstatic.net/pBP2OiJf.png)
(https://i.sstatic.net/rED8t2lk.png)
Вот мой фронт:
supersetEmbeddedSdk.embedDashboard({
id: data.embeddedCode, // given by the Superset embedding UI
supersetDomain: "{{path('superset_reverse_proxy')}}",
mountPoint: containerDashboard, // any html element that can contain an iframe
fetchGuestToken: () => data.guest_token,
dashboardUiConfig: {}, // dashboard UI config: hideTitle, hideTab, hideChartControls (optional)
})
Вот мой контроллер:
/**
* @Route("/superset/proxy/{any}", defaults={"any" = null}, name="superset_reverse_proxy", requirements={"any"=".+"})
*/
public function supersetProxy(Request $request, $any): Response
{
$supersetUrl = 'supersetDomain'; // URL de votre instance Superset
$targetUrl = $supersetUrl . $request->getRequestUri();
$guestToken = $request->getSession()->get('guest');
$csrfToken = $request->getSession()->get('csrf');
$targetUrl = str_replace('/superset/proxy', '', $targetUrl);
$headers2[] = 'Accept:application/json';
$headers2[] = 'Content-Type:application/json';
$headers2[] = 'X-CSRFToken: ' . $csrfToken;
$headers2[] = 'Authorization: Bearer ' . $guestToken;
$headers2[] = 'Accept:application/json';
$headers2[] = 'X-CSRF-Token: ' . $csrfToken;
$headers2[] = 'X-GuestToken: ' . $guestToken;
$headers2[] = 'X-Guest-Token: ' . $guestToken;
$error = null;
$info = null;
$requestMethod = $request->getMethod();
$responseContent = $this->curlRequest2($targetUrl, $headers2, $requestMethod, [], $error, $info, $request);
$responseContent = str_replace(array('href="/static/appbuilder/', 'href="/static/assets/', 'src="/static/appbuilder/', 'src="/static/assets/'), array('href="/superset/proxy/static/appbuilder/', 'href="/superset/proxy/static/assets/', 'src="/superset/proxy/static/appbuilder/', 'src="/superset/proxy/static/assets/'),$responseContent);
$finalResponse = new Response($responseContent);
$finalResponse->headers->set('Content-Security-Policy', "frame-ancestors 'self' $supersetUrl");
return $finalResponse;
}
public function curlRequest2($url, $header, $requestMethod = 'GET', $payload = [], &$error = null, &$info = null, $request = null)
{
$cURLConnection = curl_init();
curl_setopt($cURLConnection, CURLOPT_URL, $url);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURLConnection, CURLOPT_HTTPHEADER, $header);
if($request != null){
$content = $request->getContent();
if (!empty($content)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
}
}
$response = curl_exec($cURLConnection);
curl_close($cURLConnection);
return $response;
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... -apache-su
HTTP-клиент Symfony останавливает прокси-запросы на полпути при обратном проксировании Apache Superset во встроенном реж ⇐ Php
Кемеровские программисты php общаются здесь
1716452552
Anonymous
Я столкнулся с проблемой: мой контроллер Symfony, выступающий в качестве обратного прокси-сервера для Apache Superset, прекращает обработку запросов на полпути. Когда я делаю прямые запросы к Superset, все работает нормально, но через прокси-сервер Symfony запросы не выполняются.
Я использую версию Apache Superset: 3.1.2
Что я пробовал:
Прямые запросы: прямые запросы к Superset из браузера работают отлично.
Обратный прокси через Symfony: запросы через обратный прокси-сервер Symfony останавливаются на полпути.
Журналы и отладка:Проверены журналы Symfony (var/log/dev.log или var/log/prod.log).
Нет четкого сообщения об ошибке, указывающего, почему запросы прекращаются.
Что я могу сделать? Необходимо:
Возможные причины: идеи о том, что может быть причиной остановки прокси-запросов на полпути.
Советы по отладке: как эффективно отладить эту проблему в Symfony.
Корректировки конфигурации: любая конфигурация в Symfony или Superset. это могло бы предотвратить эту проблему.
Будем очень благодарны за любую помощь или предложения!
Спасибо за вашу помощь.
На первом изображении ниже показаны прямые запросы к Apache. superset
[два других изображения отслеживают запросы обратного прокси-сервера через Symfony (http-клиент Curl) до момента их остановки, а также ошибку в консоли.]
( https://i.sstatic.net/pBP2OiJf.png)
(https://i.sstatic.net/rED8t2lk.png)
Вот мой фронт:
supersetEmbeddedSdk.embedDashboard({
id: data.embeddedCode, // given by the Superset embedding UI
supersetDomain: "{{path('superset_reverse_proxy')}}",
mountPoint: containerDashboard, // any html element that can contain an iframe
fetchGuestToken: () => data.guest_token,
dashboardUiConfig: {}, // dashboard UI config: hideTitle, hideTab, hideChartControls (optional)
})
Вот мой контроллер:
/**
* @Route("/superset/proxy/{any}", defaults={"any" = null}, name="superset_reverse_proxy", requirements={"any"=".+"})
*/
public function supersetProxy(Request $request, $any): Response
{
$supersetUrl = 'supersetDomain'; // URL de votre instance Superset
$targetUrl = $supersetUrl . $request->getRequestUri();
$guestToken = $request->getSession()->get('guest');
$csrfToken = $request->getSession()->get('csrf');
$targetUrl = str_replace('/superset/proxy', '', $targetUrl);
$headers2[] = 'Accept:application/json';
$headers2[] = 'Content-Type:application/json';
$headers2[] = 'X-CSRFToken: ' . $csrfToken;
$headers2[] = 'Authorization: Bearer ' . $guestToken;
$headers2[] = 'Accept:application/json';
$headers2[] = 'X-CSRF-Token: ' . $csrfToken;
$headers2[] = 'X-GuestToken: ' . $guestToken;
$headers2[] = 'X-Guest-Token: ' . $guestToken;
$error = null;
$info = null;
$requestMethod = $request->getMethod();
$responseContent = $this->curlRequest2($targetUrl, $headers2, $requestMethod, [], $error, $info, $request);
$responseContent = str_replace(array('href="/static/appbuilder/', 'href="/static/assets/', 'src="/static/appbuilder/', 'src="/static/assets/'), array('href="/superset/proxy/static/appbuilder/', 'href="/superset/proxy/static/assets/', 'src="/superset/proxy/static/appbuilder/', 'src="/superset/proxy/static/assets/'),$responseContent);
$finalResponse = new Response($responseContent);
$finalResponse->headers->set('Content-Security-Policy', "frame-ancestors 'self' $supersetUrl");
return $finalResponse;
}
public function curlRequest2($url, $header, $requestMethod = 'GET', $payload = [], &$error = null, &$info = null, $request = null)
{
$cURLConnection = curl_init();
curl_setopt($cURLConnection, CURLOPT_URL, $url);
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURLConnection, CURLOPT_HTTPHEADER, $header);
if($request != null){
$content = $request->getContent();
if (!empty($content)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
}
}
$response = curl_exec($cURLConnection);
curl_close($cURLConnection);
return $response;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78521790/symfony-http-client-stops-proxy-requests-halfway-when-reverse-proxying-apache-su[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия