The g-recaptcha-response field is required.是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The g-recaptcha-response field is required.是啥意思?相关的知识,希望对你有一定的参考价值。
我注册时他显示的,什么意思啊?
This field is required意思是此字段必填。
一、field。
英 [fi:ld],美 [fild] 。
n.田。(作某种用途的)场地。(学习或研究的)领域;运动场。
vi.[棒球、板球等]担任外场员,担任守队队员;接守,接防。接,掷还(球)。
adj.实地的;[体育]1)。 在田赛场地进行的2)。 田赛的。军事]野战的。在实地工作的。
vt.保护。把(农作物等)晒在场上。[棒球、板球等]按(或截)(球)。即席圆满回答。
二、required。
英 [rɪ'kwaɪəd] 美 [rɪ'kwaɪəd] 。
adj。必须的,<美>(学科)必修的。
v.需要。要求( require的过去式和过去分词 )。想要。命令。
扩展资料:
equired的同义词:
一、integrant
英 ['ɪntɪgrənt] 美 ['ɪntəgrənt]
adj.部分的,必须的,构成整体的
n.要素
Database is the integrant part of the large-scale software systems.
数据库是开发大、中型软件系统必须的组成部分。
二、obligatory
英 [əˈblɪgətri] 美 [əˈblɪgətɔ:ri]
adj.强制性的;义务的;必须的;应尽的
It is obligatory for all employees to wear protective clothing.
所有员工必须穿防护服装。
参考技术AThis field is required意思是此字段必填。
一、field。
英 [fi:ld],美 [fild] 。
n.田。(作某种用途的)场地。(学习或研究的)领域;运动场。
vi.[棒球、板球等]担任外场员,担任守队队员;接守,接防。接,掷还(球)。
adj.实地的;[体育]1)。 在田赛场地进行的2)。 田赛的。军事]野战的。在实地工作的。
vt.保护。把(农作物等)晒在场上。[棒球、板球等]按(或截)(球)。即席圆满回答。
二、required。
英 [rɪ'kwaɪəd] 美 [rɪ'kwaɪəd] 。
adj。必须的,<美>(学科)必修的。
v.需要。要求( require的过去式和过去分词 )。想要。命令。
扩展资料:
equired的同义词:
一、integrant
英 ['ɪntɪgrənt] 美 ['ɪntəgrənt]
adj.部分的,必须的,构成整体的
n.要素
Database is the integrant part of the large-scale software systems.
数据库是开发大、中型软件系统必须的组成部分。
二、obligatory
英 [əˈblɪgətri] 美 [əˈblɪgətɔ:ri]
adj.强制性的;义务的;必须的;应尽的
It is obligatory for all employees to wear protective clothing.
所有员工必须穿防护服装。
参考技术B 验证码错误,看不到验证码的。本回答被提问者采纳 参考技术C 需要g-recaptcha-response字段Web API 2 c# 中的 Google reCaptcha
【中文标题】Web API 2 c# 中的 Google reCaptcha【英文标题】:Google reCaptcha in Web API 2 c# 【发布时间】:2017-09-05 17:43:39 【问题描述】:我有一个 ASP.NET Web API 2 项目。我正在尝试从表单中读取 Google Captcha。 我试过这个代码:
public string Post(FoundingRequest model)
var response = Request["g-recaptcha-response"];
string secretKey = "my key";
var client = new WebClient();
var result = client.DownloadString(
$"https://www.google.com/recaptcha/api/siteverify?secret=secretKey&response=response");
var obj = JObject.Parse(result);
model.Captcha = (bool)obj.SelectToken("success");
....
但我在第一行收到一个错误:
无法将 [] 索引应用于类型表达式 'HttpRequestMessage'
为什么?以及如何解决?谢谢
【问题讨论】:
【参考方案1】:该方法的主体对我来说效果很好:
const string secretKey = "YOUR KEY";
string responseFromServer = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://www.google.com/recaptcha/api/siteverify?secret=" + secretKey + "&response=" + response);
using (WebResponse resp = req.GetResponse())
using (Stream dataStream = resp.GetResponseStream())
if (dataStream != null)
using (StreamReader reader = new StreamReader(dataStream))
// Read the content.
responseFromServer = reader.ReadToEnd();
dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseFromServer);
return jsonResponse == null || bool.Parse(jsonResponse["success"].ToString());
更新
关于评论,可以在客户端查看
var response = window.grecaptcha.getResponse()
然后将这个变量传递给Web API
这是我的客户端脚本的一部分:
if (typeof window.grecaptcha != 'undefined')
var capResponse = window.grecaptcha.getResponse();
if (!capResponse || capResponse.length === 0)
user.isCaptchaPassed = false;
//alert("Captcha not Passed");
return false;
user.gReCaptcha = capResponse;
“user”是之前创建的JS对象,通过JS传递给服务器。 (AJAX 调用)
【讨论】:
问题出在这一行:var response = Request["g-recaptcha-response"]; 检查更新。它应该适用于 JS 和 Web API【参考方案2】:这就是我的做法。我不使用挑战,所以我没有打扰 试图弄清楚为什么它没有正确转换为 DateTime 。 也许其他人已经解决了这个问题。
public class ReCaptchaResponse
public bool Success;
public string ChallengeTs;
public string Hostname;
public object[] ErrorCodes;
[HttpPost]
[Route("captcha")]
public bool Captcha([FromBody] string token)
bool isHuman = true;
try
string secretKey = ConfigurationManager.AppSettings["reCaptchaPrivateKey"];
Uri uri = new Uri("https://www.google.com/recaptcha/api/siteverify" +
$"?secret=secretKey&response=token");
HttpWebRequest request = WebRequest.CreateHttp(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = 0;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
string result = streamReader.ReadToEnd();
ReCaptchaResponse reCaptchaResponse = JsonConvert.DeserializeObject<ReCaptchaResponse>(result);
isHuman = reCaptchaResponse.Success;
catch (Exception ex)
Trace.WriteLine("reCaptcha error: " + ex);
return isHuman;
【讨论】:
【参考方案3】:我找到了答案,我创建了一个具有特定名称的隐藏输入,并在 Captcha 回调中更新了它的值。代码:
<input type="hidden" value="" id="recaptcha" name="recaptcha" />
<div class="g-recaptcha" data-callback="imNotARobot" data-sitekey="key"></div>
而 Javascript 是:
<script type="text/javascript">
var imNotARobot = function ()
$("#recaptcha").val(grecaptcha.getResponse());
;
</script>
服务器端:
public string Recaptcha get; set;
模型绑定器完成所有工作。
【讨论】:
【参考方案4】:我假设这个请求来自一个表单,更改这个:
var response = Request["g-recaptcha-response"];
至此:
var response = Request.Form["g-Recaptcha-Response"];
也改变这个:
var result = client.DownloadString($"https://www.google.com/recaptcha/api/siteverify?secret=secretKey&response=response");
至此:
var result = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret=0&response=1", secretKey, response));
【讨论】:
请再次阅读问题。问题在于: var response = Request["g-recaptcha-response"];问题中提到的错误消息的第一行 Web Api 2 请求中没有表单 验证码在哪里?在 MVC 页面上?您需要在 MVC 控制器中验证 ReCaptcha,然后调用 API。 它在纯 html 和 javascript 上。没有服务器端 它不会那样工作。您需要在 Web 应用程序中执行服务器端检查。由于 API 无法从标记中收集所需的其他信息,例如站点密钥。以上是关于The g-recaptcha-response field is required.是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
c# Authentication failed Google ReCaptcha
Web API 2 c# 中的 Google reCaptcha
The goddess, the bird, the bell, the temptation of the house
Read the ads,Match the titles with the
simplify the design of the hardware forming the interface between the processor and thememory system