Skip to content
  1. Компоненты
  2. mxHeadless
  3. Начало работы
  4. Системные настройки

Системные настройки ​

Namespace: mxheadless. Ключи через подчёркивание (mxheadless_cors_enabled), без точек.

С 1.0.42 при обновлении пакет переносит значения со старых ключей с точками (mxheadless.cors.enabled) на новые.

API ​

КлючТипПо умолчаниюОписание
mxheadless_api_prefixtextfield/apiПубличный префикс до /v1
mxheadless_contexttextfieldwebКонтекст инициализации MODX для bootstrap API (api.php, gateway). Значение mgr игнорируется, используется web

Основные ​

КлючТипПо умолчаниюОписание
mxheadless_enabledcombo-booleantrueKill switch. При false доступны только GET / и GET /health. Остальное → 503 (service_disabled)
mxheadless_debugcombo-booleanfalseДетали исключений в problem+json (только dev)
mxheadless_swagger_enabledcombo-booleantrueSwagger UI на GET /docs. OpenAPI JSON доступен и при false

Подробнее: Swagger и OpenAPI.

Кэш ​

КлючТипПо умолчаниюОписание
mxheadless_cache_enabledcombo-booleantrueHTTP-кэш anonymous GET/HEAD с ETag
mxheadless_cache_ttlnumberfield300max-age публичных ответов (секунды)

Rate limit ​

КлючТипПо умолчаниюОписание
mxheadless_rate_limit_enabledcombo-booleantrueЛимит по identity/IP
mxheadless_rate_limit_max_requestsnumberfield120Запросов в окне
mxheadless_rate_limit_window_secondsnumberfield60Длина окна (секунды)

Лимиты на ключ: колонки rate_limit_max, rate_limit_window в mxheadless_api_keys и mxheadless_oauth_clients.

CORS ​

КлючТипПо умолчаниюОписание
mxheadless_cors_enabledcombo-booleanfalseCORS для cross-origin SPA
mxheadless_cors_allowed_originstextareaпустоOrigins через запятую или *
mxheadless_cors_allowed_methodstextfieldGET,POST,PUT,PATCH,DELETE,OPTIONSМетоды preflight
mxheadless_cors_allowed_headerstextfieldAuthorization,Content-Type,X-Request-ID,X-CSRF-Token,X-Context,X-API-Key,Idempotency-KeyРазрешённые заголовки
mxheadless_cors_expose_headerstextfieldETag,X-Request-ID,X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset,Idempotency-Replayed,X-CSRF-TokenExpose-Headers для JS
mxheadless_cors_allow_credentialscombo-booleanfalseНе сочетайте с origins=*

Подробнее: CORS.

Безопасность и идемпотентность ​

КлючТипПо умолчаниюОписание
mxheadless_max_body_bytesnumberfield1048576Макс. размер тела (1 MB). Превышение → 413
mxheadless_max_uri_bytesnumberfield2048Макс. длина path в байтах. Превышение → 414
mxheadless_trusted_proxiestextareaпустоIP прокси для X-Forwarded-For
mxheadless_csrf_enabledcombo-booleantrueCSRF для мутаций по сессии
mxheadless_idempotency_enabledcombo-booleantrueIdempotency-Key на POST
mxheadless_idempotency_ttlnumberfield86400TTL кэша idempotency (секунды)

mxheadless_max_uri_bytes проверяет только path: длинный filter[...] в query под него не попадает.

Права на protected-поля ​

Поле из списка protected в definition отдаётся не всем авторизованным, а только по отдельной проверке:

Тип identityЧто проверяется
API key, OAuth-токенscope fields.<field>
Сессия менеджераправа mxheadless_fields_<field> и mxheadless_fields_all

Права читаются через hasPermission, но транспорт их не создаёт: _build/resolvers/permissions.php заводит только mxheadless_apikeys. mxheadless_fields_<field> и mxheadless_fields_all нужно создать вручную в шаблоне ACL (Система → Пользователи → Права) и выдать нужной группе, иначе сессия менеджера не увидит protected-поля.

OAuth ​

КлючТипПо умолчаниюОписание
mxheadless_oauth_enabledcombo-booleanfalsePOST /auth/token
mxheadless_oauth_token_ttlnumberfield3600TTL mxt_* (секунды)
mxheadless_oauth_password_grant_enabledcombo-booleanfalseGrant password

Webhooks ​

КлючТипПо умолчаниюОписание
mxheadless_webhook_max_attemptsnumberfield5Попыток доставки до failed
mxheadless_webhook_worker_limitnumberfield50--limit worker по умолчанию
mxheadless_webhook_allow_private_urlscombo-booleanfalseDev: localhost/private IP (также ослабляет TLS verify)

Audit ​

КлючТипПо умолчаниюОписание
mxheadless_audit_enabledcombo-booleanfalseЖурнал в mxheadless_api_log
mxheadless_audit_retention_daysnumberfield90Срок хранения для audit-prune.php
mxheadless_audit_log_getcombo-booleanfalseЛогировать GET

Лимиты query (значения по умолчанию в коде) ​

QueryParser читает через getOption. Транспорт эти ключи не создаёт: в _build/elements/settings.php их нет, поэтому в админке они не появятся. Задавайте их в core/config/config.inc.php (или любым другим способом через getOption) и добавляйте в системные настройки вручную, если нужно видеть их в Manager:

КлючПо умолчанию
mxheadless_max_limit100
mxheadless_max_offset100000
mxheadless_max_fields50
mxheadless_max_include_relations10
mxheadless_max_include_depth2
mxheadless_allowed_contextsweb,mgr

См. Лимиты.