在iframe中嵌入accounts.google.com身份验证遇X-Frame-Options报错如何解决
报错详情:Refused to display 'https://accounts.google.com/' in a frame because it set 'X-Frame-Options' to 'deny'.
报错原因
该报错是浏览器原生安全策略限制导致的:谷歌的身份验证页面明确返回了X-Frame-Options: deny响应头,这个配置的作用就是禁止任何网站将谷歌登录页嵌套在iframe中加载,不存在通用的浏览器端绕过方案。
可行解决方法
- 完全放弃iframe嵌套谷歌登录页的思路,改用谷歌官方支持的OAuth 2.0授权方案,有两种常用实现方式:
- 整页重定向:用户触发登录操作后,直接将当前页面跳转至谷歌官方授权端点,提前在谷歌开发者后台配置好回调地址,用户完成验证后谷歌会自动跳转回你配置的回调地址,同时携带授权凭证
- 弹窗授权:点击登录按钮后弹出独立的新窗口加载谷歌验证页面,用户完成授权后可以通过
postMessage接口将授权信息传递给父页面,之后关闭弹窗即可完成登录流程
- 不要尝试使用代理修改响应头、篡改浏览器配置等非常规方案:这类方案不仅违反谷歌的服务条款,还有极高的用户账号凭证泄露风险,生产环境下也会被谷歌的安全拦截规则阻断,完全不具备可用性。
内容的提问来源于stack exchange,提问作者BALOCK Ruthel C.A.
相关产品推荐
相关产品推荐

