Angular 17内置SSR应用中iframe因CORP配置问题无法使用的求助
Angular 17内置SSR应用中iframe因CORP配置问题无法使用的求助
大家好,我最近碰到了一个Angular 17 SSR应用的问题,想在这里跟大家请教或者分享下排查过程:
我用Angular 17的内置SSR功能搭建了一个应用,结果发现里面的iframe完全无法正常工作,查了半天后确定是CORP(跨源资源共享策略)没有正确配置导致的。但有意思的是,我用相同的代码创建了一个不带SSR的标准Angular应用,iframe就运行得毫无问题,只有SSR版本的应用会出现CORP相关的配置异常。
先给大家说下我的环境版本:
- Angular CLI: 17.1.2
- Node: 20.9.0
- NPM: 10.2.3
- 所有相关依赖包的版本都是17.1.2
问题已解决!更新原因和解决办法
我后来发现,问题出在我之前修改了angular.json里的响应头配置,把COEP和COOP这两个跨源安全头直接写在了项目的构建配置里:
"headers": { "Cross-Origin-Embedder-Policy": "require-corp", "Cross-Origin-Opener-Policy": "same-origin" }
这种配置方式在SSR应用里是行不通的,会直接阻止CORP的正常生效。正确的做法应该是在服务器端来配置这些跨源安全头,而不是在angular.json里设置。
备注:内容来源于stack exchange,提问作者Kosta




