Ich arbeite an dem Portfolio-Projekt und möchte ein ReCAPTCHA implementieren, das meine Kontaktinformationen verbirgt, damit ich nicht mit Spam überflutet werde. Ich habe es auf localhost ordnungsgemäß funktionieren lassen, aber wenn ich es irgendwo in Python bereitstelle, funktioniert es nicht. Ich habe:
- sichergestellt, dass die Umgebungsvariable, die den geheimen Schlüssel enthält, korrekt ist und korrekt darauf zugegriffen wird
- manuell getestet mit Curl mit meinem geheimen Schlüssel und einem beim Laden der Site generierten Token (was erfolgreich war)
- stellte sicher, dass der in index.html gespeicherte Site-Schlüssel korrekt ist
< li>bestätigt, dass die Domain für die Schlüssel auf der Whitelist steht
Ich habe Codeausschnitte der relevanten Teile angehängt. Für jede Hilfe wäre ich sehr dankbar!
In index.html:
Code: Select all
My Portfolio
Code: Select all
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');
}
});
Code: Select all
@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