G+ 登录时出现 Chrome 未捕获错误'Protocols must match'



我已经在我的网站上添加了一个G+登录按钮,但我一直看到这个问题。在大多数情况下,这是第一次出现,如果您在刷新页面后尝试连接,则可以正常工作。

错误如下:

Uncaught SecurityError: Blocked a frame with origin .com"访问一个frame with origin "https://accounts.google.com"请求访问的帧具有"http"协议,被访问的帧具有"https"协议。协议必须匹配。

我看到了这篇文章Google + SignIn按钮阻塞框架,但解决方案与我无关。

首先,我想强调在处理用户凭证时确实应该使用https。如果可以,获得SSL证书并通过https提供您的内容。使用HTTPS可以防止MiTM攻击和用户信息泄露。

除此之外,有许多潜在的源触发警告:

  1. 如果您从提供HTTP而不是更安全的HTTPS的页面使用登录按钮,有时与登录服务器的通信会被阻止。

  2. 如果你授权的JavaScript源协议(http/https)不匹配,谷歌授权服务器将拒绝你的客户端(http://yoursite.com当你指的是https://yoursite.com)

  3. 如果你授权的JavaScript来源不匹配(例如,你把.com在授权的来源,当你的意思是yoursite.com),那么OAuth服务器将拒绝你的帧

列出来自Google Developer Console和站点的授权来源(出于安全考虑进行了混淆)可能有助于确定您的情况。

你可以改变一些事情来看看是否有帮助:

  • 尝试将cookie策略更改为'single_host_origin''http://yoursite.com'
  • 尝试在开发人员控制台中清除授权的来源,以仅包括您的http://域。
  • 尝试从隐身选项卡访问您的站点,如果此操作成功,您的浏览器cookie可能处于站点的不良状态。
  • 尝试使用Chrome网络诊断来查看特定请求是否失败。
  • 尝试将使用显式协议的包含替换为引用相对协议的包含(例如将<script src="https://foo.bar/include.js" />替换为<script src="//foo.bar/include.js" />)

相关内容

  • 没有找到相关文章

最新更新