Fetch API приводит к ошибке CSRF в Django, но не cURL? - PullRequest
0 голосов
/ 10 сентября 2018

Я сталкиваюсь с действительно странной ошибкой, когда API выборки (в проекте React-Native) приводит к ошибке CSRF, но cURL не приводит к той же ошибке. Вот заметный код:

Код извлечения:

  _signup = () => {
    fetch('http://localhost/users/', {
      method: 'post',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(this.state)
    }).then(response => {
      return response.json();
    }).then(jsonResponse => {
      console.log(jsonResponse);
    }).catch (error => {
      console.log(error)
    })

  }

, который дает следующий ответ

 Object {
 "detail": "CSRF Failed: CSRF token missing or incorrect.",
}

и код cURL:

curl -X POST -d '{"username":"a", "email":"", "password":"a"}' -H "Content-Type: application/json" http://localhost/users/

где ответ

{"url":"http://localhost/users/13/","username":"a7","email":""}

соответствующий вид Django - это просто набор:

Django View:

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer.

Есть ли причина, по которой это должно происходить? Насколько я знаю, fetch и curl должны делать одно и то же?

1 Ответ

0 голосов
/ 10 сентября 2018

Оказывается, в приложении были сохранены куки, удаление их решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...