CSRF保护到具有下载api请求的视图



我的应用程序中有这个视图,它调用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 ---

最新更新