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标准库之随机数 (math包、random包)介绍
Nov 25 Python
python在指定目录下查找gif文件的方法
May 04 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
Python内置random模块生成随机数的方法
May 31 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
Python字符串格式化f-string多种功能实现
May 07 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
vue.js刷新当前页面的实例讲解
Dec 29 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
使用无限生命期Session的方法
2006/10/09 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
extjs render 用法介绍
2013/09/11 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
Python生成器(Generator)详解
2015/04/13 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
经销商会议欢迎词
2014/01/11 职场文书
上学迟到的检讨书
2014/01/11 职场文书
暑期社会实践方案
2014/02/05 职场文书
贫困证明怎么写
2015/06/16 职场文书
毕业酒会致辞
2015/07/29 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
python和anaconda的区别
2022/05/06 Python