CSRF(Cross-Site Request Forgery)是一種常見的網絡攻擊,攻擊者利用用戶已登錄的狀態在用戶不知情的情況下執行惡意操作。為了防止 CSRF 攻擊,常用的解決方法是在表單中添加 CSRF token。但是,在使用 AJAX(Asynchronous JavaScript and XML)進行 POST 請求時,需要使用不同的方式來添加 CSRF token。
通過 POST JSON 數據時,需要在請求頭中添加 X-CSRF-Token 屬性,并將 CSRF token 的值作為其內容。下面是一個示例:
var csrftoken = 'your-csrf-token'; $.ajax({ url: '/your-api-endpoint', type: 'POST', headers: { 'X-CSRF-Token': csrftoken }, data: JSON.stringify({ // Your data here }), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function(response) { // Handle success response here }, error: function(jqXHR, textStatus, errorThrown) { // Handle error response here } });
在以上代碼中,我們首先獲取了 CSRF token,然后在 headers 中添加 X-CSRF-Token 屬性,并將 token 的值作為其內容。接著,我們使用 JSON.stringify 方法將數據轉化為 JSON 格式,并在 data 中傳遞。
需要注意的是,在 contentType 中指定了數據類型為 application/json,這是因為我們在前面將數據轉化為了 JSON 格式。在 dataType 中指定返回數據的類型,以便在成功時處理響應。
總結一下,通過在請求頭中添加 X-CSRF-Token 屬性,并將 CSRF token 的值作為其內容,可以在 POST JSON 請求中防止 CSRF 攻擊。