[英]Django CSRF cookie sending images with axios client
再會。
我需要通過帶有 axios 的客戶端的 post 方法將圖像發送到 Django 服務器,但我在服務器上收到以下消息。
禁止(未設置 CSRF cookie。):
客戶給了我以下答案
xhr.js:177 POST http://127.0.0.1:8000/xxxx/ 403(禁止)
如何解決這個問題? 可以禁用 CSRF cookie=
這是客戶端代碼:
var formData = new FormData();
formData.append("imagen", await fetch(`${filepath}`).then((e) => {
return e.blob()
})
.then((blob) => {
let b: any = blob
b.lastModifiedDate = new Date()
b.name = ''
return b as File
})
);
const axios = require('axios');
axios({
url:url,
method:'POST',
data:formData
}).then(function(res: any){
console.log(res)
}).catch((error: any) =>{
console.log(error)
//Network error comes in
});
這是服務器視圖 function (它只是檢查要調試的信息)
def completeInfo (request):
print(request)
return HttpResponse("Bad Response")
我遇到過類似的問題,使用@csrf_exempt
解決了我的問題。
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def completeInfo (request):
print(request)
return HttpResponse("Bad Response")
如果你想保持 csrf 檢查,你需要為它提供標題:
在您的模板中:
<script>
var csrfToken = "{{ csrf_token|escapejs }}";
</script>
然后在您的 axios 調用中:
axios({
url:url,
method:'POST',
data:formData,
headers: { 'X-CSRFToken': csrfToken }
})
在 django 端,settings.py:
MIDDLEWARE += ['django.middleware.csrf.CsrfViewMiddleware']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.