未捕获的安全错误:阻止了源自“https://www.google.com”的框架访问源自“http://my.site.com”的框架。

6
我正在使用谷歌的reCaptcha v2.0。当我尝试在一个简单的HTML页面中使用它时,它可以在相同的域名下运行,但是当我尝试将其与完整的生产页面集成时,却无法正常工作。点击reCaptcha复选框后,它会持续加载一段时间,之后就会抛出以下详细信息的错误: Uncaught SecurityError: Blocked a frame with origin "https://www.google.com" from accessing a frame with origin "http://my.site.com". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match. 我已经尝试删除http、https并只保留//,以便站点协议匹配,但是没有成功。如果有人有解决方案,那将是非常有帮助的。先行感谢!

只需使用 https://your-domain.com 打开您的网站,它就可以正常工作。 - Simon Schüpbach
@SimonSchüpbach:但我的网站没有启用SSL,我不知道如果添加自认证SSL会有什么影响。你在这里还能看到什么? - Kshirodra Meher
2个回答

3

当src运行在https上时,您的Web服务器必须启用SSL。


1
这绝对是我的问题。非常感谢您,这让我着迷,为什么我的cors没有生效! - twknab

1

将reCAPTCHA库的URL从https更改为http

Chrome和其他现代浏览器会避免混合使用HTTP和HTTPS。


我已经尝试了那个,但是它没有起作用。即使在同一个域中使用http实现了一个仅包含验证码的示例HTML页面,相同的东西也能工作。但是当我尝试将其集成到整个页面时出现了问题。 - Kshirodra Meher
1
这里也一样,在本地运行。去掉了https,改成http,但是还是出现同样的错误。甚至尝试了//www.google.com/recaptcha/api.js,仍然出错。太糟糕了。 - Shawn Rebelo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接