解決django前后端分離csrf驗(yàn)證的問(wèn)題
第一種方式ensure_csrf_cookie
這種方方式使用ensure_csrf_cookie 裝飾器實(shí)現(xiàn),且前端頁(yè)面由瀏覽器發(fā)送視圖請(qǐng)求,在視圖中使用render渲染模板,響應(yīng)給前端,此時(shí)這個(gè)渲染模板的視圖函數(shù)上要加上這個(gè)裝飾器
這種方式保證了模板返回時(shí),前端接收到的響應(yīng)中有csrftoken這個(gè)cookie,方法見(jiàn)代碼。
以上方法并沒(méi)有嚴(yán)格意義的前后分離,如果模板中有form表單,可以直接在模板中添加{% csrf_token %}。
第二種方式
前后完全分離,前端頁(yè)面直接通過(guò)獲取靜態(tài)文件得到,然后直接發(fā)送ajax請(qǐng)求,得到csrftoken,此時(shí)需要一個(gè)視圖函數(shù)來(lái)返回token值
def get_token(request):
token = django.middleware.csrf.get_token(request)
return JsonResponse({'token': token})
如此即可在瀏覽器將token值保存在cookie中,然后通過(guò)第一種方式中取得cookie的方法獲取cookie。
發(fā)送ajax請(qǐng)求
以上方式得到csrftoken后,需要將其添加到請(qǐng)求頭中,方法見(jiàn)代碼
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
// 給ajax請(qǐng)求設(shè)置請(qǐng)求頭x-csrftoken
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
此時(shí),csrf驗(yàn)證不再成為阻礙
以上這篇解決django前后端分離csrf驗(yàn)證的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Django中ajax發(fā)送post請(qǐng)求 報(bào)403錯(cuò)誤CSRF驗(yàn)證失敗解決方案
- django通過(guò)ajax發(fā)起請(qǐng)求返回JSON格式數(shù)據(jù)的方法
- Django框架如何使用ajax的post方法
- django+js+ajax實(shí)現(xiàn)刷新頁(yè)面的方法
- Django中使用jquery的ajax進(jìn)行數(shù)據(jù)交互的實(shí)例代碼
- 詳解Django解決ajax跨域訪問(wèn)問(wèn)題
- django 通過(guò)ajax完成郵箱用戶(hù)注冊(cè)、激活賬號(hào)的方法
- Django 使用Ajax進(jìn)行前后臺(tái)交互的示例講解
- Django+Ajax+jQuery實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)更新的實(shí)例
- Django csrf 驗(yàn)證問(wèn)題的實(shí)現(xiàn)
- 關(guān)于django 1.10 CSRF驗(yàn)證失敗的解決方法
- django框架中ajax的使用及避開(kāi)CSRF 驗(yàn)證的方式詳解
相關(guān)文章
python神經(jīng)網(wǎng)絡(luò)MobileNetV2模型的復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)MobileNetV2模型的復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Django?+?Taro?前后端分離項(xiàng)目實(shí)現(xiàn)企業(yè)微信登錄功能
這篇文章主要介紹了Django?+?Taro?前后端分離項(xiàng)目實(shí)現(xiàn)企業(yè)微信登錄功能,本文記錄一下企業(yè)微信登錄的流程,結(jié)合示例代碼給大家分享實(shí)現(xiàn)思路,需要的朋友可以參考下2022-04-04
在tensorflow中實(shí)現(xiàn)去除不足一個(gè)batch的數(shù)據(jù)
今天小編就為大家分享一篇在tensorflow中實(shí)現(xiàn)去除不足一個(gè)batch的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
python用post訪問(wèn)restful服務(wù)接口的方法
今天小編就為大家分享一篇python用post訪問(wèn)restful服務(wù)接口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
5個(gè)很好的Python面試題問(wèn)題答案及分析
這篇文章主要介紹了5個(gè)很好的Python面試題問(wèn)題答案及分析,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
解決Jupyter NoteBook輸出的圖表太小看不清問(wèn)題
這篇文章主要介紹了解決Jupyter NoteBook輸出的圖表太小看不清問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
python wordcloud庫(kù)實(shí)例講解使用方法
這篇文章主要介紹了python wordcloud庫(kù)實(shí)例,詞云通過(guò)以詞語(yǔ)為基本單位,更加直觀和藝術(shù)地展示文本。wordcloud是優(yōu)秀的詞云展示的python第三方庫(kù)2022-12-12

