[英]CSRF protection to a view with a download api request
我在我的应用程序中有这个视图,它调用 api 来下载 pdf:
@login_required
def generateContractPdf(request):
file_id = request.POST.get('contract')
contract_id = request.POST.get('contract')
payload = {"file_id": file_id}
data = {"data": json.dumps(payload, default=str)}
headers = {'content-type': 'application/json'}
brokkr = os.environ.get("BROKKR_ADDRESS", default='localhost')
response = requests.post('http://'+brokkr+':5000/contract', params=data, headers=headers)
filename=str(contract_id)+".pdf"
response = HttpResponse(response.content, content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="'+filename+'"'
return response
但我刚刚意识到,如果我不使用 render(),csrf 将不起作用,因此可以利用此视图。
我怎样才能改变它以保持这种保护?
您可以将csrf_protect
装饰器应用于您的视图,以保护 CsrfViewMiddleware 到视图。
from django.views.decorators.csrf import csrf_protect
@csrf_protect
def generateContractPdf(request):
--- Your logic ---
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.