Django通过设置CORS解决跨域问题


Posted in Python onNovember 26, 2020

一、Ajax 跨域请求

Ajax 请求一个目标地址为非本域(协议、主机、端口任意一个不同)的 web 资源。

前端
http://192.168.10.50:8080
后端
http://192.168.10.50:8000

Ajax 跨域请求保护的作用:防止跨站的攻击。

二、如何解决跨域的访问

当我们在现实当中有需要跨域访问资源,有两种解决方案:

  • 前端解决:jsonp
  • 后端解决(Django):CORS 专门解决方案

这篇文章主要介绍使用 Django 框架进行开发时的后端解决方案。

三、Django 解决跨域问题

Django 框架中通过 django-cors-headers 这个模块解决。

1. 安装

pip install django-cors-headers

2. 注册应用

注册到 settings 的 INSTALLED_APPS 中。

INSTALLED_APPS = (
 ...
 'corsheaders',
 ...
)

3. 添加到中间件

添加到 settings 的 MIDDLEWARE 中,一般放在 django.middleware.csrf.CsrfViewMiddleware 前面。

MIDDLEWARE = [
 'corsheaders.middleware.CorsMiddleware',
 ...
]

4. 添加白名单

添加允许访问的白名单,凡是出现在白名单的域名都可以访问后端接口。

# 添加 CORS 配置
# 1. 设置白名单
CORS_ORIGIN_WHITELIST = (
 '127.0.0.1:8080',
 'localhost:8080',
 'http://192.168.10.50:8080', # 凡是出现在白名单中的域名,都可以访问后端接口
)
# 2. 设置 CORS Cookie
CORS_ALLOW_CREDENTIALS = True # 指明在跨域访问中,后端是否支持对cookie的操作

到此这篇关于Django 通过设置CORS解决跨域问题的文章就介绍到这了,更多相关Django  CORS跨域内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python发送arp欺骗攻击代码分析
Jan 16 Python
Python多进程编程技术实例分析
Sep 16 Python
Python批量转换文件编码格式
May 17 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python全局变量与局部变量区别及用法分析
Sep 03 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
Mar 24 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 Python
Elasticsearch 批量操作
Apr 19 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 #Python
python模拟点击在ios中实现的实例讲解
Nov 26 #Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 #Python
python 实现超级玛丽游戏
Nov 25 #Python
python 制作简单的音乐播放器
Nov 25 #Python
python中绕过反爬虫的方法总结
Nov 25 #Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
Nov 25 #Python
You might like
php函数的常用方法及注意之处小结
2011/07/10 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
简单的Python的curses库使用教程
2015/04/11 Python
python设计模式大全
2016/06/27 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
存储过程和函数的区别
2013/05/28 面试题
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
关于旷工的检讨书
2014/02/02 职场文书
中学教师自我鉴定
2014/02/07 职场文书
高三学习决心书
2014/03/11 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
商铺租赁意向书
2014/04/01 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
影视广告专业求职信
2014/09/02 职场文书
感恩教师节主题班会
2015/08/12 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
Pandas 数据编码的十种方法
2022/04/20 Python
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS