mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 09:14:58 +03:00
🚑 fix(platform): не редиректить ask-эндпоинт Caddy на https
Caddy спрашивает разрешение на on-demand сертификат Help Center по plain HTTP из внутренней сети, X-Forwarded-Proto не шлёт и по редиректам не ходит. SECURE_SSL_REDIRECT отвечал 301, Caddy считал домен неавторизованным и сертификат портала не выпускался: браузер получал ERR_SSL_PROTOCOL_ERROR на foxray.help.custocrm.ru. Исключаем /api/v1/gateway/ из SSL-редиректа на platform-сёрфейсе. Проверено на стенде: ask отдаёт 204 для опубликованного портала и 404 для постороннего домена, сертификат выпущен. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c090f5904b
commit
9cc92be044
2 files changed
+19
No files matched your search
@@ -24,6 +24,12 @@ if "backend-platform" not in ALLOWED_HOSTS:
|
||||
CSRF_TRUSTED_ORIGINS = env_list("CUSTOCRM_PLATFORM_CSRF_TRUSTED_ORIGINS", [])
|
||||
CORS_ALLOWED_ORIGINS = []
|
||||
|
||||
# Caddy спрашивает разрешение на on-demand сертификат Help Center по plain HTTP
|
||||
# из внутренней сети: заголовок X-Forwarded-Proto он не шлёт и по редиректам не
|
||||
# ходит. Без исключения SECURE_SSL_REDIRECT отвечает 301, Caddy считает домен
|
||||
# неавторизованным и сертификат портала не выпускается.
|
||||
SECURE_REDIRECT_EXEMPT = [r"^api/v1/gateway/"]
|
||||
|
||||
SESSION_COOKIE_NAME = os.environ.get(
|
||||
"CUSTOCRM_PLATFORM_SESSION_COOKIE_NAME",
|
||||
"__Host-custocrm-platform-session"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import re
|
||||
from importlib import import_module
|
||||
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
@@ -41,3 +42,15 @@ class RuntimeSurfaceSettingsTests(SimpleTestCase):
|
||||
admin_settings = import_module("hub_backend.settings_admin")
|
||||
|
||||
self.assertEqual(admin_settings.ALLOWED_HOSTS, ["127.0.0.1", "localhost"])
|
||||
|
||||
def test_gateway_ask_endpoint_is_exempt_from_ssl_redirect(self) -> None:
|
||||
# Caddy ходит на этот путь по plain HTTP и редирект считает отказом:
|
||||
# 301 здесь означает, что Help Center остаётся без сертификата.
|
||||
platform_settings = import_module("hub_backend.settings_platform")
|
||||
|
||||
self.assertTrue(
|
||||
any(
|
||||
re.search(pattern, "api/v1/gateway/help-domain/")
|
||||
for pattern in platform_settings.SECURE_REDIRECT_EXEMPT
|
||||
)
|
||||
)
|
||||
Reference in new issue
Block a user