[英]sending cookies with ajax request via fetch api
在一個nodeJs應用程序中,我正在通過ajax請求將multipart/form-data
發送到服務器。 我也在使用csurf
軟件包來防御csrf
攻擊
問題
當我不使用ajax請求提交表單時,一切正常,但是當我使用ajax請求提交表單時,服務器上出現invalid csrf token
錯誤。
據我所知,此錯誤的原因是由於未隨請求一起發送Cookie。
為了發送帶有ajax請求的cookie,我在通過fetch api
發出的post
請求中設置了credentials: 'same-origin'
,但這不能解決問題。 我還嘗試設置credentials: 'include'
但這沒有任何區別。
題
我的理解是正確的,因為此問題是由於cookie未隨ajax請求發送而引起的,我該如何解決此問題?
碼
let response = await fetch(requestUrl, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'multiplart/form-data'
},
body: new URLSearchParams(form)
});
當將fetch()
/ AJAX與csurf
一起csurf
,您需要將CSRF令牌作為請求標頭傳遞:
// Read the CSRF token from a hidden input in the form
const token = document.querySelector('input[name="csrf-token"]').value;
// POST using the Fetch API
fetch('/<route.name>', {
headers: {
// pass the csrf token as a header
'CSRF-Token': token
},
method: 'POST',
body: {
...
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.