1. 기본 CORS 원리브라우저는 출발 도메인(aa.aaa.com)과 응답 도메인(aaa.com)이 다르다고 판단 → CORS 헤더 필요. 즉, aaa.com 서버에서 Access-Control-Allow-Origin 등을 내려줘야 함.2. nginx 설정 예시(1) 단일 서브도메인 허용server { listen 443 ssl; server_name aaa.com; location / { # 실제 서비스 처리 proxy_pass http://backend; # CORS 허용 헤더 add_header 'Access-Control-Allow-Origin' 'https://aa.aaa.com' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always; add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type' always; add_header 'Access-Control-Allow-Credentials' 'true' always; # Preflight (OPTIONS) 요청 처리 if ($request_method = OPTIONS) { add_header 'Access-Control-Allow-Origin' 'https://aa.aaa.com' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always; add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type' always; add_header 'Access-Control-Allow-Credentials' 'true' always; return 204; } }}(2) 모든 서브도메인 허용 (정규식 매칭)nginx는 Access-Control-Allow-Origin에 와일드카드(*)를 쓰면 credentials(쿠키, 세션) 허용이 불가능해요. 그래서 보통 Origin 헤더를 읽어서 동적으로 반영합니다.map $http_origin $cors_origin { default ""; "~^https?://([a-z0-9-]+)\.aaa\.com$" $http_origin;}server { listen 443 ssl; server_name aaa.com; location / { proxy_pass http://backend; if ($cors_origin != "") { add_header 'Access-Control-Allow-Origin' $cors_origin always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always; add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type' always; add_header 'Access-Control-Allow-Credentials' 'true' always; } if ($request_method = OPTIONS) { return 204; } }}3. 체크리스트 프론트엔드 요청 코드: fetch나 axios 요청 시 credentials: 'include' 필요 여부 확인. SSL: 반드시 HTTPS 환경에서 테스트 (특히 크롬). OPTIONS 요청이 제대로 처리되는지 확인 (nginx에서 빠뜨리면 405 에러).