跨域请求存在诸多安全问题,例如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项目中的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
- 更新 settings 文件