Skip to content

fix(web-api): CORS preflight OPTIONS до CorsMiddleware - #637

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-634-cors-preflight-options
Open

fix(web-api): CORS preflight OPTIONS до CorsMiddleware#637
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-634-cors-preflight-options

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Браузерный CORS preflight (OPTIONS) к Web API получал 405 Method not allowed: FastRoute отдавал METHOD_NOT_ALLOWED до запуска group middleware, и CorsMiddleware не успевал ответить.

Теперь Router::dispatch() на OPTIONS для известных storefront-путей (/api/v1/*) прогоняет только middleware найденного маршрута. Handler не вызывается — preflight не триггерит POST/GET side effects. CorsMiddleware возвращает Response 200 вместо exit, чтобы Router и PHPUnit могли обработать ответ.

Closes #634

Тип изменений

  • Исправление бага (non-breaking change)

Связанные Issues

Closes #634

Как это было протестировано?

cd core/components/minishop3
composer ci:php   # exit 0 — php -l, smoke (89), PHPUnit 260 tests

Добавлены HeadlessStorefrontCorsRouterTest: OPTIONS на /api/v1/health, POST-only /api/v1/cart/add, неизвестный path → 404, handler не вызывается без CorsMiddleware.

  • Автоматические тесты (composer ci:php)

Конфигурация тестирования:

  • MiniShop3: beta
  • PHP: 8.4.17 (локально)

Чеклист

  • Код соответствует стилю проекта
  • Изменения не ломают существующую функциональность
  • Лексиконы (не требуются)
  • CHANGELOG (релиз maintainer)

Дополнительные заметки

Кастомные роуты в ms3.routes.d/web без CorsMiddleware по-прежнему получат 405 на OPTIONS (handler не выполняется). Для headless-витрины аддон должен вешать тот же CORS stack, что и web.php.

Router обрабатывает OPTIONS на известных storefront-путях через middleware
без вызова handler. CorsMiddleware возвращает Response 200 вместо exit.

Closes #634
@Ibochkarev Ibochkarev added the bug Something isn't working label Aug 25, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 August 25, 2026 04:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Web API: CORS preflight OPTIONS возвращает 405 до CorsMiddleware

1 participant