javascript - Ajax 发布 Django Rest Framework 出现 403 禁止错误
问题描述
有很多类似的问题,但每个问题似乎都在不同的场景下处理问题,或者规定的解决方案似乎无法解决我的问题。基本上,为什么我会收到这个 403 Forbidden 错误?
POST http://127.0.0.1:8000/api/hello-viewset/ 403 (Forbidden)
该 url 是一个 Django Rest Framework (DRF) 端点,我可以从浏览器访问它并使用 DRF gui 进行 POST 就好了。问题是当我尝试从我的 javascript 文件中使用 Ajax 进行 POST 时。请注意,我正在传递 CSRFToken(如此处所建议):
$.ajax({
type: "POST",
url: '/api/hello-viewset/',
csrfmiddlewaretoken: window.CSRF_TOKEN, // yes, this variable is set successfully
data: {first_name: username},
success: function(data){
console.log( 'success, server says '+data);
}
});
/api/hello-viewset/ url 只是一个简化的测试视图,如下所示:
class HelloViewSet(viewsets.ViewSet):
serializer_class = serializers.HelloSerializer
def post(self, request):
serializer = serializers.HelloSerializer(data=request.data)
if serializer.is_valid():
first_name = serializer.data.get('first_name')
message = 'Hello {0}'.format(first_name)
return Response({'message': message})
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
在此先感谢您的帮助?
解决方案
csrfmiddlewaretoken: window.CSRF_TOKEN
未正确设置。它应该添加到数据中,即:
$.ajax({
type: "POST",
url: '/api/hello-viewset/',
data: {
first_name: username,
csrfmiddlewaretoken: window.CSRF_TOKEN
},
success: function(data){
console.log( 'success, server says '+data);
}
});
推荐阅读
- html - iframe 调整为动态内容
- reactjs - 删除动态添加的表格行 - 反应js
- python - 在 Python 中将 CSV 数据转换为嵌套的 JSON
- android - 抛出 java.net.ProtocolException:流的意外结束
- html - 使用 html 和 css 将鼠标悬停在图标上时在右侧显示文本
- jquery - 如何在 MVC razor 视图中将表格元素复制到另一个?
- html - 在主块内垂直对齐两个块中间
- spring-boot - springboot2.0集成hikariCP2.7.9,抛出“默认事务隔离级别检测失败(代理警告-靠近“。”:语法错误)。”
- python - 在python中重叠滑动窗口
- java - Hashmap Json 保存和加载