XAMPP需启用mod_headers模块并在虚拟主机或目录中添加Header always set Cross-Origin-Embedder-Policy "require-corp",且所有子资源须声明CORP头才能启用crossOriginIsolated。
XAMPP 本身不支持直接通过
启用
(COEP),因为 Apache 2.4 默认不提供该响应头的原生配置能力;你必须手动添加
指令,且需确保
已启用——否则配置无效,浏览器会静默忽略 COEP。
确认 mod_headers 是否已加载
COEP 是一个 HTTP 响应头,Apache 必须通过
模块才能设置。XAMPP 默认启用了它,但容易被误关或覆盖。
打开
搜索
,确认该行未被注释(即前面没有
)
若已注释,删掉
;若整行缺失,说明模块文件损坏或被移除,需重装 XAMPP 或手动补全模块路径
改完后必须运行
验证语法,再重启 Apache
在虚拟主机或目录中添加 COEP 响应头
COEP 不是全局开关,它只对明确设置了该头的响应生效。不能只写在主配置里就“自动覆盖所有站点”,必须落到具体
或
块中。
在
对应项目的
内添加:
若项目还依赖
(如防 XS-Leaks),需一并加:
注意:两个头必须同时存在且策略兼容,否则浏览器会拒绝加载资源(例如图片、iframe、WebAssembly)
不要用
或
这类非标准值,Chrome/Firefox 当前只稳定支持
和
(后者需配合
)
多端口下 COEP 的实际作用范围
COEP 只约束「当前响应的来源」,和监听端口无关。你在
中配了
和
,每个端口上的虚拟主机仍需单独配置 COEP 头——端口切换不会继承头策略。
比如
和
是两个独立源,各自响应头互不影响
若某个端口没配 COEP,即使其他端口配了,该端口下的页面也无法使用
或跨域 iframe 的
安全上下文
常见错误:只在
的
里加了 COEP,却期望
下的前端也能启用
——这不会生效
COEP 的真正门槛不在配置,而在整个资源链路:所有子资源(JS、CSS、图片、字体、iframe)都必须声明
或同源加载,否则页面无法进入
状态。这点比加一行
要难得多。
httpd.confCross-Origin-Embedder-PolicyHeadermod_headersmod_headersXAMPP\apache\conf\httpd.confLoadModule headers_module##httpd -thttpd-vhosts.confHeader always set Cross-Origin-Embedder-Policy "require-corp"Cross-Origin-Opener-PolicyHeader always set Cross-Origin-Opener-Policy "same-origin"unsafe-nonecredentiallessrequire-corpcredentiallessCross-Origin-Resource-Policyhttpd.confListen 8080Listen 8081http://localhost:8080/myapphttp://localhost:8081/otherappSharedArrayBufferpostMessage:80:8080crossOriginIsolatedCross-Origin-Resource-Policy: cross-origincrossOriginIsolatedHeader