Cross-Origin-Embedder-Policy
응답 헤더 Security

개요

Cross-Origin-Embedder-Policy(COEP)는 문서가 로드하는 모든 교차 출처 하위 리소스(이미지·스크립트·iframe 등)가 자신을 임베드해도 좋다고 명시적으로 허가했을 때만 로딩을 허용하도록 강제하는 보안 헤더입니다. require-corp로 켜면 허가 없는 교차 출처 리소스는 차단됩니다.

자세히

require-corp를 설정하면 문서 안의 모든 교차 출처 하위 리소스가 Cross-Origin-Resource-Policy 헤더(same-site/cross-origin 등)로, 또는 CORS(Access-Control-Allow-Origin + crossorigin 속성)로 로딩을 허용해야 합니다. 허가가 없으면 브라우저가 그 리소스를 로드하지 않습니다. 이는 임베드된 자원이 격리된 프로세스로 새어 들어와 사이드채널로 읽히는 것을 막기 위한 조건입니다.

COEP의 핵심 용도는 COOP과 함께 crossOriginIsolated를 성립시키는 것입니다. COOP: same-origin + COEP: require-corp(또는 credentialless)가 갖춰져야 self.crossOriginIsolated가 true가 되고 SharedArrayBuffer·고정밀 타이머가 열립니다. 즉 WebAssembly 스레드, ffmpeg.wasm 같은 무거운 연산을 브라우저에서 돌리려면 사실상 COEP가 필수입니다.

require-corp는 서드파티 자산이 CORP/CORS를 지원하지 않으면 대거 깨질 수 있어 도입 장벽이 큽니다. 이를 완화한 credentialless는 교차 출처 no-cors 요청을 쿠키·자격 증명 없이 보내는 조건으로 CORP 없이도 로딩을 허용합니다. 다만 자격 증명이 빠지므로 로그인 기반 이미지 등은 예상과 다르게 동작할 수 있습니다.

문법

Cross-Origin-Embedder-Policy: <unsafe-none | require-corp | credentialless>[; report-to="<group>"]

e.g. Cross-Origin-Embedder-Policy: require-corp

지시어 / 값

unsafe-none기본값. 임베드되는 리소스에 별도 옵트인을 요구하지 않음.
require-corp모든 교차 출처 하위 리소스가 CORP 또는 CORS로 명시적으로 로딩을 허용해야 함.
credentialless교차 출처 no-cors 요청을 자격 증명(쿠키) 없이 보내 CORP 없이도 로드 허용. require-corp의 완화 대안.
report-to="<group>"차단된 리소스 등 COEP 위반을 보고할 Reporting-Endpoints 그룹.

실무 참고

관련 헤더

관련 상태코드

스펙 근거