首页 > 解决方案 > 使用 Cypress 在 Chrome 无头模式下忽略 X-Frame-Options

问题描述

我正在构建一个赛普拉斯测试,该测试使用@msal-browser PKCE 身份验证登录到我的应用程序,该身份验证针对位于不同域中的 Azure B2C 租户,这对我造成了 x-frame 问题:

Refused to display 'https://somecrossdomainurl/oauth' in a frame because it set 'X-Frame-Options' to 'deny'.

我意识到跨域测试违反了赛普拉斯登录最佳实践——但是,我的身份验证方法使用的是 PKCE,而不是隐式授权流程,因此如果没有浏览器交互,我就无法获得令牌。此外,轻微的片状风险是我愿意为实际登录到我的应用程序的实时集成测试做出的权衡。

我通过安装第三方扩展程序来使用建议的解决方法来忽略 X-Frame 标头,并且效果很好。当我尝试在--headless模式下运行它时,问题就来了。Chrome不允许以无头模式安装扩展程序,因此这种解决方法对于 CI 环境来说确实是站不住脚的。

除了存根验证之外,我不知道如何处理这个问题。鉴于隐式流的已知漏洞和 PKCE 的兴起,它认为应该有一个选项可以在赛普拉斯内部处理这个问题。我对赛普拉斯比较陌生,所以我肯定错过了一些简单的东西吗?

标签: cypressmsalpkce

解决方案


推荐阅读