CORS-генератор
Соберите корректную CORS-политику и получите её как конфиг Nginx, Go (Chi/Gin), Express или Caddy — либо вставьте заголовки ответа и узнайте, что из них сделает браузер.
location /api/ {
add_header Access-Control-Allow-Origin "https://app.example.com" always;
add_header Vary "Origin" always;
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin "https://app.example.com" always;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" always;
add_header Access-Control-Allow-Headers "Content-Type, Authorization" always;
add_header Access-Control-Max-Age 86400 always;
return 204;
}
# proxy_pass … ;
}CORS, который браузеры действительно принимают
Опишите политику один раз — origin, методы, заголовки, credentials, кеш preflight — и получите её как конфиг там, где реально живёт ваш edge: location Nginx с origin-белым списком через map, middleware Go для Chi или Gin, пакет cors для Express или блок Caddyfile. Генератор отказывается выдавать сочетания, которые браузеры отвергают, — например, wildcard origin вместе с credentials.
Режим разбора работает в обратную сторону: вставьте заголовки ответа, которые вы реально получили (из devtools или curl -i), и посмотрите, что из них сделает браузер, — с теми же предупреждениями.
Почему API работает в curl, но падает в браузере с ошибкой CORS?
Почему нельзя * вместе с cookie?
CORS — это защита моего API?
Что реально экономит Max-Age?
Смежные инструменты: HTTP-заголовки, Security-заголовки и CSP-анализатор.