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配置中

1
2
3
# 修改settings.py中的INSTALLED_APPS配置
 
INSTALLED_APPS = ['corsheaders']

  

3、注册CorsMiddleware中间件

1
2
3
4
5
6
7
8
9
10
11
12
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、跨域设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 服务器运行跨域的域名
 
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/

 

posted @   北京测试菜鸟  阅读(270)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示