CORS와 보안 관련 HTTP 헤더
프론트엔드와 API 서버 분리 환경에서 필수적인 CORS 설정과 웹 보안을 위한 주요 HTTP 헤더 설정 방법

CORS (Cross-Origin Resource Sharing)
동일 출처 정책 (Same-Origin Policy)
웹 브라우저의 보안 정책으로 특정 출처에서 다른 출처의 리소스 접근을 제한
출처는 Protocol, Host, Port의 조합으로 결정
CORS 동작 방식
단순 요청: GET, HEAD, POST 메서드와 기본 헤더만 사용하는 요청
예비 요청: 단순 요청 조건을 벗어나는 경우 OPTIONS 메서드로 먼저 확인
인증 정보 포함 요청: 쿠키, 인증 헤더 등을 포함하며 양쪽 모두 특별한 설정 필요
Django CORS 설정
# django-cors-headers 설치 후 settings.py 설정
INSTALLED_APPS = ['corsheaders']
MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware']
# 허용할 출처 명시 (운영환경에서는 실제 도메인만)
CORS_ALLOWED_ORIGINS = [
"https://example.com",
"http://localhost:3000",
]
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"]
CORS_ALLOW_HEADERS = ["Authorization", "Content-Type", "X-CSRF-Token"]보안 HTTP 헤더
HSTS (Strict-Transport-Security)
HTTP 연결을 강제로 HTTPS로 전환하여 중간자 공격 방지
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = TrueCSP (Content-Security-Policy)
신뢰할 수 있는 콘텐츠 소스를 지정하여 XSS 공격 방어
django-csp 라이브러리 사용 권장
X-Content-Type-Options
브라우저의 MIME 타입 스니핑 공격 방지
SECURE_CONTENT_TYPE_NOSNIFF = TrueX-Frame-Options
다른 사이트의 iframe 내부 렌더링을 막아 Clickjacking 공격 방지
X_FRAME_OPTIONS = 'DENY'Referrer-Policy
다른 출처로 이동 시 전송되는 Referer 헤더 정보 제어
SECURE_REFERRER_POLICY = 'strict-origin-when-cross-origin'Last updated
