django - Fetch API 会导致 Django 中的 CSRF 错误,但不会导致 cURL?
问题描述
我遇到了一个非常奇怪的错误,其中 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 -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 应该做同样的事情吗?
解决方案
事实证明,应用程序中存储了 cookie,删除它们解决了问题。
推荐阅读
- api - 如何运行两个查询 i) 来自:ii) 使用 Postman 的 Twitter API 的关键字?
- docker - docker 无法找到 main.js 文件以使用 typeorm 在 nestjs 中运行后端
- flutter - Flutter - 将图像添加到 BottomNavigationBarItem
- spring - 使用 apache camel ftp 组件将文件移动到存档目录
- javascript - React useState hooks初始值为null,几秒钟后获得值然后不更新在哪里使用该值
- hive - 在 HIVE 上插入 Spark-SQL 插件
- postgresql - 删除多个 Postgresql 表中的重复行
- java - 为什么即使我正确编写了代码(根据教程),我也会出现这个错误?
- c++ - 清除 C++ 中的动态值映射
- javascript - 如何分离 Elastic Beanstalk 环境?