Django/React CSRF Failed: Проверка происхождения не удалась - http://localhost:8000/ не соответствует ни одному доверенному источнику.

Я создаю веб-приложение, используя Django для бэкенда, RestApi для передачи информации и ReactJs для фронтенда. Когда я выполняю POST-запрос, в котором я отправляю данные из формы, я получаю ошибку: "CSRF Failed: Origin checking failed - http://localhost:8000/ does not match any trusted origins. "Это означает, что Django распознает вопрос, но отклоняет его по неизвестной причине.

ReactJs использует прокси для работы с данными сервера. Я читал уже решенные статьи на форуме, такие как статья 1, статья 2, статья 3, статья 4, их решения мне не помогли.

Мой запрос из ReactJs:

const item = {tittle : data.target.tittle.value, description : data.target.description.value};
axios({
    headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
        },
     method : "post",
     url : "api/articles/",
     data : item
}).catch((e) => {console.log(e)})
       

Setting.py:

CSRF_TRUSTED_ORIGINS = [
'http://localhost:8000'
]
ALLOWED_HOSTS = [
'localhost',
]
CORS_ORIGIN_WHITELIST = [
'http://localhost:8000',
]
CORS_ORIGIN_ALLOW_ALL = True

класс для обработки запросов в views.py:

class ArticleList(generics.ListCreateAPIView):
    def post(self, request, format=None):
        serializer = ArticleSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def get(self, request, format=None):
        snippets = Articles.objects.all()
        serializer = ArticleSerializer(snippets, many=True)
        return Response(serializer.data)

Мне помогло добавление переменной authentication_classes = [] в тело класса. Теперь мой класс ArticleList выглядит следующим образом:

class ArticleList(generics.GenericAPIView):
    authentication_classes = []
    def post(self, request, format=None):
        serializer = ArticleSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    def get(self, request, format=None):
        snippets = Articles.objects.all()
        serializer = ArticleSerializer(snippets, many=True)
        return Response(serializer.data)
Вернуться на верх