我正在开发一个与API交互的Chrome扩展程序,并希望使用Google recaptcha来保护它,因为我打算让它不仅限于Chrome扩展程序的使用。API方面已经可以正常工作,并能够正确验证Google的recaptcha响应,但是在扩展程序的浏览器操作窗口中显示recatcha小部件会导致以下JavaScript错误:
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('chrome-extension://pjhcgfibbbmibojnlkgjejaojpokgldl:80') does not match the recipient window's origin ('chrome-extension://pjhcgfibbbmibojnlkgjejaojpokgldl').
在
recaptcha_en.js
文件中的以下代码行生成该验证码:(a.window || ne(a.Tg)).postMessage(JSON.stringify({
message: c || null ,
messageType: b
}), Zj(a.path));
问题似乎是
a.path
的值为chrome-extension://pjhcgfibbbmibojnlkgjejaojpokgldl:80
,但我不知道如何影响这个值。这个错误的结果是reCAPTCHA小部件显示了一条消息:请升级到受支持的浏览器以获取reCAPTCHA挑战。
我通过自动呈现方法来显示小部件,但也尝试了显式方法,结果仍然出现同样的错误。提供信息,我正在使用以下
content_security_policy
:script-src 'self' https://*.google.com https://*.gstatic.com; object-src 'self'
有没有办法让这个在我的扩展程序中工作?如果不能,什么是集成reCAPTCHA的最佳替代方法?