Django解决跨域请求的问题
CORS: cross-origin resource sharing 跨域资源共享
CORS 需要浏览器和服务器同时支持,整个CORS的过程,都是浏览器自动完成,对于用户来说是无感的,先要实现 CORS 的关键是服务器,只要服务器实现了 CORS 接口,就可以跨域通信
同源策略: 浏览器最核心最基础的安全功能
何为同源:
url的协议,主机,端口完全一致的时候就是同源(端口默认是80)
http://example.com/
http://example.com:80/
http://example.com/path
上面的每个url都是同源的
以下每个资源都是不同源的
http://example.com/
http://example.com:8080/
http://www.example.com/
https://example.com/
https://www.baidu.com/
何为同源策略,简单理解,就当打开某个页面后,这个页面上的ajax请求默认只能向和页面同源的url发送http请求
django-cors-headers 是一个处理cors所需服务器头信息的一个django应用
1、安装django-cors-headers模块
pip install django-cors-headers
2、插入Django的APP配置中
# 修改settings.py中的INSTALLED_APPS配置 INSTALLED_APPS = ['corsheaders']
3、注册CorsMiddleware中间件
jdango查找中间件由上到下,注意要放到 CommonMiddleware 上面
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', # CORS中间件
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
4、跨域设置
# 服务器运行跨域的域名
CORS_ALLOWED_ORIGINS = [
# 设置允许跨域的域名
'http://localhost:8000',
'http://127.0.0.1:8001',
]
# 允许cookie跨域
# CORS_ALLOW_CREDENTIALS = True
# 允许所有来源跨域
CORS_ALLOW_ALL_ORIGINS = True
具体介绍可以查看 https://pypi.org/project/django-cors-headers/

浙公网安备 33010602011771号