gpt4 book ai didi

python - 如果使用 requests 模块将数据发布到 django View ,如何提供 csrf 保护

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:21 24 4
gpt4 key购买 nike

我有一个 modelForm 如下:

class UserProfileForm(forms.ModelForm):
class Meta:
model = FileUploads
fields = ['uploads']

和这样的 View :

@csrf_exempt
def upper(request):
form = UserProfileForm(request.POST or None, request.FILES or None)
if form.is_valid():
form.save()
return HttpResponse(status=200)
return HttpResponse(status = 403)

我有一个简单的脚本来将多部分/编码文件发送到 View ,如下所示:

import requests
f = open('C:\\Users\\myname\\Desktop\\image.jpg', 'rb')
urls='http://localhost:8000/upper'
r=requests.post(urls, files= {'uploads':f})
print(r.status_code)

我的问题是:只要我在接收 View 上方有 csrrf_exempt 装饰器,一切都可以正常工作,这对于测试环境来说很好。但如果我想要 csrf 保护到位怎么办?考虑到我正在使用 requests 模块,我如何提供 csrf token ?

最佳答案

您需要传递一个具有相同值的 cookie 和 header :

import requests
f = open('C:\\Users\\myname\\Desktop\\image.jpg', 'rb')
urls='http://localhost:8000/upper'
cookies = {'csrftoken': 'token'}
headers = {'X-CSRF-TOKEN': 'token'}
r=requests.post(urls, files={'uploads':f}, cookies=cookies, headers=headers)
print(r.status_code)

token 的值并不重要,您可以采用任何文字,只要它们相同即可。

关于python - 如果使用 requests 模块将数据发布到 django View ,如何提供 csrf 保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com