我在Djangowww.example.com中有以下的python代码views.py,该代码接收JSON主体并将提取的数据发送到另一个API端点,我在这里简化了代码。
我如何启用csrf,使它将令牌发送回这个方法的调用者?我从postman调用这个方法。
@csrf_protect
def validate_booking(request):
if request.method != "POST":
return HttpResponseServerError("Invalid HTTP method")
body = json.loads(request.body)
booking_details = body["booking_details"]
DATA = {
"name": booking_details["name"],
"nric": booking_details["nric"],
"booking_id": booking_details["booking_id"]
}
return HttpResponse(status="200")
这个网站指示把这段代码放在我的方法中。但是“a_template.html”是什么呢?https://docs.djangoproject.com/en/4.1/ref/csrf/
@csrf_protect
def my_view(request):
c = {}
# ...
return render(request, "a_template.html", c)
1条答案
按热度按时间83qze16e1#
这不是一件容易的事情,因为CSRF是2个步骤的事情
1.有一个传递给客户端的值,该值保存到服务器上的会话中。
1.收到POST请求时,客户端应在正文中将其作为
csrfmiddlewaretoken
发送,服务器将根据服务器会话中存储的值检查该值。因此,这在API中是不可行的,因为您需要的会话管理不是REST API实现。