Recaptcha文档不清楚-并进行跨站错误测试

问题描述 投票:9回答:2

任何人都可以帮我弄清楚Recaptcha文档的最后一页说的是什么,我觉得它格格不入。

这是我不明白的文档:

验证用户的响应

此页面说明了如何验证用户对reCAPTCHA的响应从您的应用程序后端挑战。解决reCAPTCHA时最终用户会在其中填充一个新字段(g-recaptcha-response)HTML。您可以通过以下三种方式之一验证用户的回复:

g-recaptcha-response POST参数,当用户在您的网站。用户之后的grecaptcha.getResponse(opt_widget_id)完成验证码挑战。如果在g-recaptcha标记中指定了数据回调,则作为回调函数的字符串参数属性或grecaptcha.render方法中的回调参数

API请求

URL:https://www.google.com/recaptcha/api/siteverify?secret=your_secret&response=response_string&remoteip=user_ip_address

我如何“验证”?

它说我可以通过三种方式“验证用户的响应”,所以让我们采用第一种方法:现在,已提交表单中的POST参数称为g-recaptcha-response,其中包含一些gobbledygook内容。我的问题是:现在呢?我是否只检查它是否不为null?

或者我是否可以使用下面提到的API请求将其发送给Google,然后检查其响应?这可能是有道理的,但是如果文档将其拼写出来,那就更好了,而是仅显示“ API Request”。如果他们说出response_string(大概是)g-recaptcha-response参数的内容,那也很好。

很明显,我的学费昂贵,请耐心等待我确认是否应该执行API请求。


这给我带来了第二个问题:您可以测试recaptcha小部件在本地计算机上是否可以正常运行,但是您无法测试“ API请求”-我收到跨站点错误

XMLHttpRequest无法加载https://www.google.com/recaptcha/api/siteverify。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源'http://localhost'。

任何人都知道解决这个问题的方法,以便您可以进行测试?

cors recaptcha
2个回答
5
投票

从您所说的看来,您的主要问题是您正在使用用户的浏览器而不是在服务器上验证用户的响应。是真的吗?

仅说明一下,发生了什么...

  • 您以客户表单显示Recaptcha小部件。
  • 用户填写。
  • 小部件做了一些聪明的事情,您的客户端现在有一个response_string,可以在表格中以字段g-recaptcha-response形式使用(您也可以使用它们提到的其他两种javascript方法来获取它。)>
  • 当用户提交表单时,请确保服务器接收到response_string以及所有其他表单数据。
  • 在服务器上,您必须向https://www.google.com/recaptcha/api/siteverify发出请求。如何执行此操作将取决于您在服务器上使用的语言。应该很容易。您会收到一条回复,说明用户是否正确输入了验证码。

8
投票

也许这篇文章会有所帮助,因为它显示了来自后端和前端前提条件的确切代码片段:

© www.soinside.com 2019 - 2024. All rights reserved.