最近在接乙個前後端分離的專案,後端使用的django-restframework,前端使用的vue。後端跑起來後,發現前端在訪問後端api時出了了跨域的問題。
關於跨域問題,之前這篇文章也提到過
一、前後端互動之ajax及跨域問題,當時裡面是使用的jsonp方式,但是jsonp只支援get方法,不能全面支援跨域。
這裡主要學習一下通過後端解決跨域問題的方法,其實前端也有解決跨域的方法,後面學習到了再寫乙個文章記錄。
django後端解決跨域方式一middleware
中間介實現跨域過程
1、新建中間介包
return responsesettings檔案配置:
在中間介新增配置
'finance.middleware.crossdomainxhr.xssharing',
跨域配置:
我這裡前端使用的是源是
# crossdomain
#xs_sharing_allowed_origins ='*'
xs_sharing_allowed_origins = ''
xs_sharing_allowed_methods = ['post', 'get']
xs_sharing_allowed_headers = ['content-type', '*']
xs_sharing_allowed_credentials = 'true'
通過第三方包方式:
注意:既然有第三方包,name為什麼還要用第一種方式,自己寫呢?原因是第三方包對django的版本有要求:
有些django版本比較老的話 就只能用第一種方式咯。
具體實現如下:
1、安裝django-cors-headers
pip install django-cors-headers
2、配置settings.py檔案
...'corsheaders',
... ]
b.在middleware_classes新增配置:
middleware_classes = (
...'corsheaders.middleware.corsmiddleware',
'django.middleware.common.commonmiddleware',
...
c.在sitting.py底部新增
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 = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
徹底解決django跨域問題
1.何謂跨域?後端介面訪問位址是這個,你卻偏要用其他網域名稱來訪問,這就產生了跨域.2.如何解決?前端想跨域訪問時,首先傳送乙個option請求詢問後端是否允許你跨域,若允許,後端返回響應告知.前端再次把請求傳送過來,後端進行處理.3.django後端如何處理跨域?第一步,安裝第三方擴充套件 pip...
django前後端分離解決跨域
1.安裝虛擬環境 mkvirtualenv dj admin 環境名 若系統中存在多個python版本在環境名前需指定python版本 2.配置虛擬環境,安裝django pip install django 安裝依賴包 3.進入虛擬環境 workon 環境名退出虛擬環境 deactivate 檢視...
解決Django 前後端分離跨域問題
瀏覽器的同源策略 同源策略是一種瀏覽器最基本的安全機制,如果兩個 url 的 protocol port 如果有指定的話 和 host 都相同的話,則這兩個 url 是同源。支援python 3.6至3.9。支援django 2.2到3.2。1 從pip安裝 pip install django c...