【问题标题】:Fetch API leads to CSRF error in Django, but not cURL?Fetch API导致Django中的CSRF错误,但不是cURL?
【发布时间】:2019-02-14 12:08:39
【问题描述】:

我遇到了一个非常奇怪的错误,其中 fetch 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 视图:

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

有什么理由会发生这种情况吗?据我所知, fetch 和 curl 应该做同样的事情?

【问题讨论】:

标签: django react-native curl fetch


【解决方案1】:

原来是应用程序中存储了cookie,删除它们解决了问题。

【讨论】:

  • 你能描述一下你是怎么做到的吗?将不胜感激。
  • 我只是重置了我认为的开发设备(iOS模拟器)
猜你喜欢
  • 2015-06-18
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2016-08-16
  • 2011-03-12
  • 2020-10-29
  • 2019-03-02
  • 2019-07-02
相关资源
最近更新 更多