Я пытаюсь интегрировать reCaptcha (v3) в сайт ColdFusion.Я не слишком разбираюсь в синтаксисе CF и в настоящее время, похоже, ничего не получаю от запроса проверки на стороне сервера.
Может кто-нибудь увидеть что-то явно неправильное и / или указать мне правильное направление, пожалуйста?
Клиентская сторона:
<script src='https://www.google.com/recaptcha/api.js?render=6..."></script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('6...', {action: 'contact'})
.then(function(token) {
$("#recaptchaToken").val(token);
});
});
</script>
Я имеюв моей форме есть скрытое поле recaptchaToken
, и я вижу, как в него входит значение token
.
На стороне сервера:
<cfhttp
url="https://www.google.com/recaptcha/api/siteverify"
method="POST"
result="captchaResponse">
<cfhttpparam
type="formfield"
name="secret"
value='6...'
/>
<cfhttpparam
type="formfield"
name="response"
value='#form.recaptchaToken#'
/>
</cfhttp>
<cfdump var=#captchaResponse.filecontent# />
Я получаю вывод красного поля с заголовком object of java.io.ByteArrayOutputStream
Я пытался сбросить оба captchaResponse
и captchaResponse.filecontent
безрезультатно.
Я ожидаю данных в виде:
{
"success": true|false, // whether this request was a valid reCAPTCHA token for your site
"score": number // the score for this request (0.0 - 1.0)
"action": string // the action name for this request (important to verify)
"challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
"hostname": string, // the hostname of the site where the reCAPTCHA was solved
"error-codes": [...] // optional
}
Обновление
Решение выглядит так, как предложил Алекс:
<cfdump var=#toString(captchaResponse.filecontent)# />
Это дает мне строку JSON в ожидаемом формате, чтобы я мог преобразовать ее в объект и завершить проверку.