2017-01-13 36 views
0

views.pyDjango: csrf_exempt не работает, когда другой запрос отправки сервера?

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")) 

Я использовал третью стороннего сервиса (я клиент), и он посылает своего рода Notification request(POST) в OrderPayCheckView.

Поскольку это POST request не из моего приложения, я думал, что этот вид должен быть украшен csrf_exempt, так что он больше не требует csrf token.

Когда я проверил с POSTMAN, он работает очень хорошо: он отображает страницу перенаправленных шаблонов как тело ответа.

Однако, когда эта служба третьей стороной (сервер) пытался отправки POST запрос на этой точке зрения, он показывает CSRF-маркер ошибки аутентификации, как это:

(Поскольку ошибки на корейском языке, перевожу его)

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> 

Что в этом плохого? Должен ли отправитель добавить к нему запрос reference header?

ответ

-1

Edit: Это не правильный ответ и не нужен

Вы не украсит метод post

@method_decorator(csrf_exempt) 
def dispatch(self, request, *args, **kwargs): 
    return super(OrderPayCheckView, self).dispatch(request, *args, **kwargs) 

@method_decorator(csrf_exempt) 
def post(self, request, *args, **kwargs): 
    return redirect(reverse("home")) 
+0

Спасибо, но все еще не работает ... – user3595632

+0

Эта услуга должна попадание более чем одной конечной точки. Проверьте журналы своего веб-сервера. – OregonTrail

+0

Что вы подразумеваете под «ударом более одной конечной точки»? Я использую 'gunicorn', но ничто не появляется в журнале – user3595632