/ / csrf token dajaxice - ajax, django, csrf

token csrf dajaxice - ajax, django, csrf

Ci sto provando questo esempio. Ogni volta che provo ad accedere alla funzione dajax, dà l'errore "no csrf o cookie di sessione". Come posso aggiungere il token csrf in javascript. Ho provato ad aggiungere token csrf nel modello e non ha funzionato.

risposte:

1 per risposta № 1

A partire dal django doc:

  1. Aggiungi il middleware "django.middleware.csrf.CsrfViewMiddleware "al tuo elenco di classi middleware, MIDDLEWARE_CLASSES. (Dovrebbe venire prima di CsrfResponseMiddleware se è in uso, e prima di qualsiasi middleware di visualizzazione che presuppone che gli attacchi CSRF siano stati risolti.) In alternativa, è possibile utilizzare il decoratore django.views.decorators.csrf.csrf_protect su particolari viste che si desidera proteggere (vedere di seguito).

  2. In qualsiasi modello che utilizza un modulo POST, utilizzare il tag csrf_token all'interno dell'elemento se il modulo è per un URL interno:

    {% csrf_token%}

Questo non dovrebbe essere fatto per i moduli POST che hanno come target URL esterni, poiché ciò causerebbe la fuoriuscita del token CSRF, portando a una vulnerabilità.

  1. Nelle funzioni di visualizzazione corrispondenti, assicurarsi che venga utilizzato il processore di contesto "django.core.context_processors.csrf". Di solito, ciò può essere fatto in due modi:

    3.1 Usa RequestContext, che usa sempre "django.core.context_processors.csrf "(non importa quale sia l'impostazione TEMPLATE_CONTEXT_PROCESSORS). Se utilizzi viste generiche o app contribuenti, sei già coperto, dal momento che queste app utilizzano RequestContext ovunque.

    3.2 Importare e utilizzare manualmente il processore per generare il token CSRF e aggiungerlo al contesto del modello.


2 per risposta № 2

1) aggiungi "django.middleware.csrf.CsrfViewMiddleware" al middleware_classes in settings.py

2) dopo il tag nel modello, usa {% csrf_token%}

in fondo, questo è tutto

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax qui puoi trovare informazioni sui token javascript e ajax csrf


1 per risposta № 3

Forse questo aiuterà: "Token CSRF mancante o errato" mentre il parametro post tramite AJAX in Django