Cross-Origin-Resource-PolicyCross-Origin-Resource-Policy(CORP)는 이 리소스를 어떤 오리진의 문서가 no-cors 방식으로 가져가(임베드해) 사용할 수 있는지를 서버가 선언하는 보안 헤더입니다. 리소스 소유자가 same-origin/same-site/cross-origin 중 하나로 임베딩 범위를 좁혀, Spectre류 사이드채널 유출을 방어합니다.
CORS가 '응답 본문을 스크립트가 읽을 수 있는가'를 다룬다면, CORP는 '이 리소스를 아예 가져다 쓰는(로딩하는) 것'을 오리진 단위로 통제합니다. no-cors로 로드되는 이미지·스크립트·미디어는 스크립트가 픽셀·본문을 직접 읽지 못해도 메모리에 들어오는데, Spectre 같은 투기적 실행 공격은 이 메모리를 사이드채널로 훔쳐볼 수 있습니다. CORP: same-origin은 그런 리소스가 교차 출처 문서의 프로세스로 들어가는 것을 원천 차단합니다.
값은 same-origin(정확히 같은 오리진만), same-site(같은 등록 가능 도메인·스킴), cross-origin(누구나) 세 가지입니다. 공개 CDN 자산·폰트·공용 이미지는 cross-origin으로 열어야 다른 사이트에서 정상 로딩되고, 사설·내부 리소스는 same-origin/same-site로 잠급니다.
CORP는 COEP: require-corp의 만족 조건이기도 합니다. crossOriginIsolated를 노리는 페이지가 임베드하는 모든 교차 출처 리소스는 CORP: cross-origin(또는 CORS)을 갖춰야 require-corp 하에서 로딩됩니다. 즉 CDN이 자산에 CORP: cross-origin을 주지 않으면 격리 페이지에서 그 자산이 깨집니다.
Cross-Origin-Resource-Policy: <same-site | same-origin | cross-origin>e.g. Cross-Origin-Resource-Policy: same-origin
same-origin | 정확히 같은 오리진의 문서만 이 리소스를 no-cors로 임베드/로드할 수 있음. |
same-site | 같은 사이트(등록 가능 도메인, 스킴 포함)의 문서만 로드 허용. |
cross-origin | 모든 오리진이 이 리소스를 로드하도록 허용. CDN·공개 자산에 사용. |