淺談django rest jwt vue 跨域問題
django rest framework 使用 router 注冊url時,訪問接口 包302錯誤 可能是因為請求url 寫法有問題,
如請求 /api/login/ 報302 ,需要去掉后面的反斜杠,正確寫法 /api/login 請求跨域:
跨域:
簡單來說就是 A 網(wǎng)站的 javascript 代碼試圖訪問 B 網(wǎng)站,包括提交內容和獲取內容。這顯然是不安全的。為此,瀏覽器的鼻祖:網(wǎng)景(Netscape)公司提出了優(yōu)秀的解決方案:著名的瀏覽器同源策略?,F(xiàn)在所有支持JavaScript的瀏覽器都會使用這個策略。
同源:
域名、協(xié)議、端口均相同的網(wǎng)站即為同源。
流程:
當一個瀏覽器的兩個Tab頁分別打開百度和谷歌頁面時,百度發(fā)起一個腳本執(zhí)行,此時瀏覽器會檢查該腳本屬于哪個頁面。即檢查是否同源。只有和百度同源的腳本才會被執(zhí)行。若非同源,在請求數(shù)據(jù)時,瀏覽器會在控制臺報一個異常。提示拒絕訪問。
解決方法:
安裝django-cors-headers
pip install django-cors-headers
settings.py配置
INSTALLED_APPS = [ ... "corsheaders", ... ] MIDDLEWARE_CLASSES = ( ... "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware", # 注意順序 ... ) # 跨域增加忽略 CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_ALLOW_ALL = True CORS_ORIGIN_WHITELIST = ( "*" ) CORS_ALLOW_METHODS = ( "DELETE", "GET", "OPTIONS", "PATCH", "POST", "PUT", "VIEW", ) CORS_ALLOW_HEADERS = ( "XMLHttpRequest", "X_FILENAME", "accept-encoding", "authorization", "content-type", "dnt", "origin", "user-agent", "x-csrftoken", "x-requested-with", )
解決
通過以上配置,即可完美解決django跨域請求處理。
需要注意的就是cors - headers的中間件CorsMiddleware在注冊時必須放在django - common中間件的前一個。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python使用json模塊讀取和寫入JSON數(shù)據(jù)
Python 提供了內置的 json 模塊,使得我們可以方便地解析 JSON 數(shù)據(jù)(讀取)和生成 JSON 數(shù)據(jù)(寫入),下面小編就來為大家介紹一下具體的操作步驟吧2025-03-03
Python實現(xiàn)捕獲異常發(fā)生的文件和具體行數(shù)
這篇文章主要介紹了Python實現(xiàn)捕獲異常發(fā)生的文件和具體行數(shù)。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python實現(xiàn)郵件發(fā)送的詳細設置方法(遇到問題)
這篇文章主要介紹了Python實現(xiàn)郵件發(fā)送的詳細設置方法(遇到問題),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
詳解model.train()和model.eval()兩種模式的原理與用法
這篇文章主要介紹了詳解model.train()和model.eval()兩種模式的原理與用法,相信很多沒有經驗的人對此束手無策,那么看完這篇文章一定會對你有所幫助2023-03-03
django多對多表的創(chuàng)建,級聯(lián)刪除及手動創(chuàng)建第三張表
這篇文章主要介紹了django多對多表的創(chuàng)建,級聯(lián)刪除及手動創(chuàng)建第三張表,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07

