用于 reCAPTCHA 的 CORS

Posted

技术标签:

【中文标题】用于 reCAPTCHA 的 CORS【英文标题】:CORS for reCAPTCHA 【发布时间】:2018-08-23 05:34:10 【问题描述】:

我正在开发一个希望在其中包含 Google 的 reCAPTCHA 的网站。

如果我将以下<script> 标签添加到我的<head>

<script crossorigin="anonymous" src='https://www.google.com/recaptcha/api.js'> </script>

我收到以下错误:

Access to Script at 'https://www.google.com/recaptcha/api.js' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

好的,很好,很公平。在本地主机上工作时,我总是可以在 Chrome 上禁用 CORS。但域名是 www.google.com。我不太愿意将 access-control-allow-origin 标头发送到 google 根域上的任何内容 - 这感觉就像一个可以让公共汽车通过的安全漏洞。

如何通过合理的生产设置来解决这里的跨源问题?

【问题讨论】:

【参考方案1】:

删除crossorigin="anonymous"

您的页面只需要运行脚本。它无需请求提升权限,因此您的 JS 可以访问有关它的更多信息。如果它抛出错误,那么您将无权访问 Google 的服务器以进行更正。

【讨论】:

我不敢相信它这么简单。我已经添加了这一点,因为它抛出了一个错误但我无法阅读它——我假设是因为我正在运行的 webpack 开发服务器的某些东西。谢谢!

以上是关于用于 reCAPTCHA 的 CORS的主要内容,如果未能解决你的问题,请参考以下文章

密钥如何与 reCAPTCHA v3 Enterprise 配合使用?

如何使用 Selenium 和 Python 绕过带有 buster 扩展的 ReCaptcha

The reCAPTCHA 啥意思?

reCAPTCHA 成功时从元素中删除 css 类 - Nextjs

仅当用户是人类(reCaptcha v3)时,如何加载和插入一些 HTML?

无法连接到recaptcha服务