Viene visualizzato l'errore "Impossibile impostare cookie CSRF" durante il tentativo di eseguire il POST su una semplice applicazione di test utilizzando il framework Rango di Django. L'ho provato con Django 1.4 e Django 1.6.2. Sto usando il framework di Django REST v 2.3.13.Perché ottengo il "cookie CSRF non impostato" quando il POST è in framework Django REST?
Ho provato a utilizzare il decoratore @csrf_exempt
, ma non aiuta.
Questa è una molto semplice applicazione, senza registrazione utente/login ecc
Tutte le idee perché sto ottenendo questo errore?
Aggiornamento: ho aggiornato il mio urls.py come mostrato di seguito e ora funziona !!
Ecco il mio codice:
urls.py
from django.conf.urls import patterns, url
from quickstart import views
urlpatterns = patterns('',
url(r'^api_add/$', views.api_add, name='api_add'),
)
views.py
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['POST'])
def api_add(request):
return Response({"test": 'abc'})
settings.py
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
)
post.sh
curl -X POST -H "Content-Type: application/json" -d '
{
"name": "Manager",
"description": "someone who manages"
}' http://127.0.0.1:8000/api_add/
L'ho provato prima di pubblicare la mia domanda. Avrei dovuto dirlo Ho ancora lo stesso errore. – smithy
Ho aggiornato la mia risposta. È una soluzione? – tjati
Non volevo disattivare la protezione CSRF perché avrò alcuni utenti che pubblicano moduli tramite un browser Web e per loro voglio la protezione CSRF. Sono riuscito a farlo funzionare aggiornando il mio urls.py ... – smithy