簡體   English   中英

通過獲取api發送帶有ajax請求的cookie

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM