對於想要利用django框架實現前后端分離,首要的問題是解決跨域請求的問題,什么是跨域請求?簡單來說就是當前發起的請求的域與該請求指向的資源所在的域不一致。當協議+域名+端口號均相同,那么就是同一個域.
解決方案
1.JSONP,比較原始的方法,本質上是利用html的一些不受同源策略影響的標簽,例如:<a>,<img>,<iframe>,<script>等,從而實現跨域請求,但是這種方法只支持GET的請求方式。
2.CORS,Cross-Origin Resource Sharing,是一個新的W3C標准,它新增的一組HTTP首部字段,允許服務端聲明哪些源站有權限訪問哪些資源,換言之,它允許瀏覽器向聲明了CORS的跨域服務器發出XML HttpRequest請求,從而客服Ajax只能同源使用的限制。在django框架中就是利用CORS來解決跨域請求的問題.
1.安裝:pip install django-cors-headers
2.修改django項目中的settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'corsheaders',#這是我們的主角,放在新建的其他項目之前 'app01', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', #注意順序,必須放在這兒 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
# 允許所有的請求頭
CORS_ALLOW_HEADERS = (' * ')