我正在构建一个 Chrome 扩展程序,它与我希望使用 Google recatcha 保护的 API 进行交互,因为我打算让它在 Chrome 扩展程序之外使用。 API 端正在工作,正确验证了 Google 的 recapcha 响应,但是,在扩展程序的浏览器操作窗口内显示 recapcha 小部件会导致以下 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
is chrome-extension://pjhcgfibbbmibojnlkgjejaojpokgldl:80
但我不知道如何影响这个值。
此错误的结果是 recaptcha 小部件显示一条消息:
请升级到支持的浏览器以获得 reCAPTCHA 挑战。
我通过以下方式显示小部件自动渲染方法,但也尝试过显式方法这会导致同样的错误。有关信息,我正在使用以下内容content_security_policy
:
script-src 'self' https://*.google.com https://*.gstatic.com; object-src 'self'
有什么办法可以让它在我的扩展中工作吗?如果没有,集成验证码的最佳替代方法是什么?