Вход из браузера на staging давал 403 на POST /api/login. Браузер шлёт заголовок Origin: https://reactive-mail.staging.jambocheck.com, а сервер за Caddy видит себя по http. Для CORS это другой источник, а список разрешённых пуст, поэтому каждый запрос из браузера отклонялся. curl без Origin входил успешно, поэтому я это пропустил.
server.forward-headers-strategy=framework: схема и хост берутся из X-Forwarded-*, которые выставляет Caddy
Проверено: ошибка воспроизведена через curl с Origin (403, без него 200), тесты backend проходят. После деплоя тот же curl должен дать 200.
Вход из браузера на staging давал `403` на `POST /api/login`. Браузер шлёт заголовок `Origin: https://reactive-mail.staging.jambocheck.com`, а сервер за Caddy видит себя по `http`. Для CORS это другой источник, а список разрешённых пуст, поэтому каждый запрос из браузера отклонялся. `curl` без `Origin` входил успешно, поэтому я это пропустил.
- `server.forward-headers-strategy=framework`: схема и хост берутся из `X-Forwarded-*`, которые выставляет Caddy
Проверено: ошибка воспроизведена через `curl` с `Origin` (`403`, без него `200`), тесты backend проходят. После деплоя тот же `curl` должен дать `200`.
— α
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Вход из браузера на staging давал
403наPOST /api/login. Браузер шлёт заголовокOrigin: https://reactive-mail.staging.jambocheck.com, а сервер за Caddy видит себя поhttp. Для CORS это другой источник, а список разрешённых пуст, поэтому каждый запрос из браузера отклонялся.curlбезOriginвходил успешно, поэтому я это пропустил.server.forward-headers-strategy=framework: схема и хост берутся изX-Forwarded-*, которые выставляет CaddyПроверено: ошибка воспроизведена через
curlсOrigin(403, без него200), тесты backend проходят. После деплоя тот жеcurlдолжен дать200.— α
🤖 Generated with Claude Code