1. 程式人生 > 實用技巧 >Django解決跨域的問題

Django解決跨域的問題

由於瀏覽器的同源策略(是一種瀏覽器為安全性考慮實施的安全策略),當從一個域上載入的指令碼去訪問另一個域的文件屬性時,則會被拒絕。
同源指:URL由協議、域名、埠和路徑組成,如果兩個URL的協議、域名和埠相同,則為同源,否則為跨域。
跨域僅限於使用XMLHttpRequest物件和Fetch發起的HTTP請求。

Django如何解決跨域:
1、安裝模組
pip install django-cors-headers

2、settings.py配置檔案設定
新增App

新增中介軟體,需要注意放的位置,在SessionMiddleware後面以及CommonMiddleware前面

新增配置引數

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
'http://ops.xxx.com',
'http://ops.xxx.com:8001',
)
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',
'Pragma',
'x-token',
)
到這一步所有的跨域配置其實都已經配置完成了,但是需要注意的是,有些前端訪問時console依舊報跨域的問題,這裡一般會有兩種情況,也是我所遇到的,其實都很簡單。
第一個是注意CORS_ALLOW_HEADERS,有些web前端可能還有其它的一些頭部,當訪問還是存在有跨域的時候,注意看是否存在上面沒有的頭部,新增上去即可。
第二個則是你後端Django程式報錯,如果程式報錯,前端console也會打印出跨域的資訊出來,這個時候要檢查一下Django程式碼。