views.pyDjango: csrf_exempt ne fonctionne pas lorsque d'autres serveurs envoient une requête?
class OrderPayCheckView(View):
@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
return super(OrderPayCheckView, self).dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return redirect(reverse("home"))
J'utilisé le service 3ème partie (je suis client) et il envoie en quelque sorte Notification request(POST)
-OrderPayCheckView
.
Depuis ce POST request
n'est pas de mon application, je pensais que cette vue devrait être décorée avec csrf_exempt
de sorte qu'il ne nécessite plus csrf token
.
Lorsque j'ai testé avec POSTMAN
cela fonctionne très bien: il montre la page de modèle redirigé en tant que corps de la réponse.
Toutefois, lorsque ce service 3ème partie (serveur) a essayé d'envoyer POST
demande à ce point de vue, il montre une erreur d'authentification CSRF-jeton comme celui-ci:
(Comme les erreurs sont en coréen, je traduis)
REQUEST HTTP BODY : imp_uid=imp_1234567890&merchant_uid=merchant_1234567890&status=ready
REQUEST HTTP STATUS : 403
REQUEST HTTP BODY :
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="robots" content="NONE,NOARCHIVE">
<title>403 Forbidden</title>
</head>
<body>
<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p> CSRF authentication failed. </p>
<p> The reason this message shown up is that this https site require "reference header" from your browser, but didn't receive anything abuout it. This header is required for security.</p>
</div>
</body>
</html>
Qu'est-ce qui ne va pas? Est-ce que l'expéditeur doit ajouter reference header
à sa demande?
Merci, mais ne fonctionne toujours pas ... – user3595632
Ce service doit frapper plus d'un point final. Vérifiez les journaux de votre serveur Web. – OregonTrail
Que voulez-vous dire par "frapper plus d'un point final"? J'utilise 'gunicorn' mais rien ne vient dans un journal – user3595632