【发布时间】:2021-06-04 05:34:54
【问题描述】:
您好,我正在使用 Django Rest Framework 和 Swagger。我在 POST 请求时收到此错误。
{
"detail": "CSRF Failed: CSRF token missing or incorrect."
}
考虑到 POST 请求包含,这很奇怪
"X-CSRFToken: 01658Gyfzlhz2v6zgoZjtbHSrWzrVTBrlseyp2JMfVHvh6PzfamHpgxuh4eaVXad"
这是完整的请求
curl -X POST "http://127.0.0.1:8000/api/order-post/" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -H "X-CSRFToken: 01658Gyfzlhz2v6zgoZjtbHSrWzrVTBrlseyp2JMfVHvh6PzfamHpgxuh4eaVXad" -d "customer_name=Muhammad%20Ahsan%20Mukhtar&country=Pakistan&address=Cb%20679%20Kashmir%20Colony%20Gujranwala%20Cantt&email=ahsan44411%40gamil.com&postal_code=52250&country_code=4343&phone_number=243434&tracking_number=4343"
我什至尝试过使用 csrf_exempt 但这也无济于事,我得到了同样的错误。
@method_decorator(csrf_exempt, name="dispatch")
class OrderPost(generics.ListCreateAPIView):
queryset = Order.objects.all()
serializer_class = OrderSerializer
我正在使用 Django Rest Framework 的默认设置,我相信它是 SessionAuthentication。
我已经坚持了几个小时没有运气,任何帮助将不胜感激。谢谢。
【问题讨论】:
-
DRF 视图已免于 csrf 检查
-
@JPG 这仍然不能说明我遇到的错误
-
您是否尝试在不发送
X-CSRFToken标头的情况下访问端点? -
@JPG 我没有发送 X-CSRFToken。 Swagger 可能正在添加此标头本身。我已经在 Postman 上测试过 API,它在那里运行良好。它只是在这里给出一个问题。
标签: django django-rest-framework swagger