Cross-Origin-Embedder-PolicyCross-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 그룹. |