跨域请求存在诸多安全问题,例如CSRF攻击等,

  浏览器针对这个安全问题会有一个同源策略,必须是我们上面说到的同源请求,才能顺利发出请求。

解决方案

1.JSONP,比较原始的方法,

  本质上是利用html的一些不受同源策略影响的标签,

  诸如:、、、

2.CORS,Cross-Origin Resource Sharing,是一个新的 W3C 标准,

  它新增的一组HTTP首部字段,允许服务端其声明哪些源站有权限访问哪些资源。

  换言之,它允许浏览器向声明了 CORS 的跨域服务器,发出 XMLHttpReuest 请求

  ,从而克服 Ajax 只能同源使用的限制。

  在我们的django框架中就是利用CORS来解决跨域请求的问题。

Django中如何使用CORS

打开cmd,执行命令:pip install django-cors-headers

django 前后端分离跨域方案_python

修改django项目中的setting.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 = ('*')

pip freeze > requirements.txt

服务器 中 重新 安装 依赖

 pip install -r requirements.txt

django 前后端分离跨域方案_python_02

  • 更新 settings 文件

django 前后端分离跨域方案_django_03

django 前后端分离跨域方案_安全问题_04