Я работаю над проектом портфолио и хочу внедрить ReCAPTCHA, которая скроет мою контактную информацию, чтобы меня не завалило спамом. У меня он работает правильно на локальном хосте, но при развертывании на Pythonanywhere он не работает. Я:
- убедился, что переменная среды, содержащая секретный ключ, верна и доступна правильно
- проверено вручную с помощью curl с моим секретным ключом и токеном, сгенерированным при загрузке сайта (которая прошла успешно)
- убедился, что ключ сайта, хранящийся в index.html, верен
< li>проверил, что домен внесен в белый список для ключей
Я прикрепил фрагменты кода соответствующих фрагментов. Будем очень признательны за любую помощь!
В index.html:
My Portfolio
grecaptcha.ready(async function () {
const token = await grecaptcha.execute('', { action: 'contact_info' });
// Verify the reCAPTCHA token with the server
const response = await fetch('/verify_recaptcha', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: token })
});
const result = await response.json();
if (result.success && result.score > 0.5) {
document.getElementById('contact-info').style.display = 'block';
} else {
console.error('Failed reCAPTCHA verification');
}
});
И из server.py:
@app.route('/verify_recaptcha', methods=['POST'])
def verify_recaptcha():
try:
data = request.json # Expecting JSON payload
token = data.get('token')
# Send the token to Google's verification API
verify_url = 'https://www.google.com/recaptcha/api/siteverify'
payload = {'secret': secret_key, 'response': token}
response = requests.post(verify_url, data=payload)
result = response.json()
# Add additional logging for debugging
print(f"reCAPTCHA verification result: {result}")
return jsonify({
'success': result.get('success', False),
'score': result.get('score', 0),
'action': result.get('action', ''),
}), 200
except Exception as e:
print(f"Error during reCAPTCHA verification: {e}")
return jsonify({'success': False, 'error': 'Internal server error'}), 500
Подробнее здесь: https://stackoverflow.com/questions/793 ... deployment
Мобильная версия