解決思路
如何解決這種情形的問題呢?
瀏覽器同源策略有條規(guī)則,Response頭部如果包含如下字段值,則不做CORS檢查。
Access-Control-Allow-Origin: *
解決方法:通過 django-cors-headers 庫來實現(xiàn)
1): 安裝:
pip install django-cors-headers
2) 修改 settings.py 配置文件
添加到應用列表
INSTALLED_APPS = ( ##... 'corsheaders' )
corsheaders.middleware.CorsMiddleware
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'corsheaders.middleware.CorsMiddleware', ......
然后,添加下面配置 允許所有 domain 訪問
CORS_ORIGIN_ALLOW_ALL = True
或者,允許某些域訪問
CORS_ORIGIN_ALLOW_ALL = False # 允許域名加入白名單 CORS_ORIGIN_WHITELIST = ( 'http//:localhost:8000', )
至此,Django端已經(jīng)解決了跨域問題,如果有問題,一是注意步驟是否有遺漏, 二是注意 瀏覽器端是否有清緩存(個人在這里因為沒有清緩存,花了很長時間,電腦重啟了都沒有起作用)
說明
在測試環(huán)境中,可以允許所有domain來訪問,以避免 CORS問題,前后端分離項目在生產(chǎn)環(huán)境下,通常應該部署在同域下,
如果確實需要跨域,則將前端域名添加到白名單 CORS_ORIGIN_WHITELIST
配置項中,禁止其它域訪問。