Django後端徹底解決跨域問題

2021-10-07 09:28:08 字數 3737 閱讀 7912

最近在接乙個前後端分離的專案,後端使用的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...