Vue和Django都是十分流行的Web開發框架。而在使用Vue和Django的時候,一個重要的問題就是如何處理csrf(Cross-site request forgery)。
csrf攻擊是指攻擊者偽造請求,從而達到在未授權的情況下進行一些惡意操作的目的。而csrf防御機制的實現是:在服務端生成一個csrf_token,將其放入到session中,在每個form提交時,將這個csrf_token隨著form的數據一起發到服務端。如果這個發來的csrf_token與服務端session中的csrf_token不匹配,則表明這個form是偽造的而被拒絕。
在使用Vue和Django的時候,很多人搞不清楚csrf_token的生成與處理,以下是一些經驗總結:
# Django中獲取csrf_token {% csrf_token %}
這會在生成html文件時插入一個input標簽,如下:
<input type="hidden" name="csrfmiddlewaretoken" value="VX3biI1r5GcxwocMoDdtM7kgNNqV1XWX">
在Vue中,需要在請求api時手動添加csrf_token:
import axios from 'axios'; axios.defaults.headers.common['X-CSRFToken'] = document.querySelector('input[name=csrfmiddlewaretoken]').value; export default { fetchData() { return axios.get('/api/'); }, };
此處需要注意的是,添加csrf_token的代碼要放在axios的初始化代碼之前。
以上就是如何在Vue和Django中使用csrf_token的簡介,如有不當之處,請指正。