django后台启动CORS跨越配置

文章目录

    • 背景
      • 什么是跨域问题?
      • 跨域问题的解决方案
    • Django 解决跨域问题

背景

什么是跨域问题?

跨域问题是指浏览器的同源策略限制了来自不同域的 AJAX 请求。
具体来说:

  • 同源策略要求源相同才能正常进行 AJAX 通信。
  • 判断是否同源需要满足三个条件:
    1. 协议相同(http或https)
    2. 域名相同
    3. 端口相同
  • 不满足以上条件就是不同源,属于跨域。
    举个例子:
  • 前端域名是:http://www.example.com
  • 后端域名是:http://api.example.com
    虽然二者域名相关,但前三段不完全一致,所以属于跨域。
    当前端通过 AJAX 请求后端接口时,就会触发浏览器的同源策略,请求会被阻止。
    这就是跨域问题。

跨域问题的解决方案

  • 部署时使前后端域名满足同源策略
  • 通过 CORS 让后端 server 明确告知浏览器允许跨域请求
  • 通过代理服务器避免前端直接跨域请求后端
    前端代理的方式可以在开发环境使用,但实际生产环境还是应该后端启用 CORS。前端代理增加了部署复杂度。
  • JSONP等其他跨域方案已经不再推荐,存在安全和使用上的限制。

如果前后端可以部署在同一个域名下,那么可以避免跨域,这是最简单的方案。如果前后端实在无法部署在同域名,那么最常见和推荐的就是后端启用 CORS。这是官方推荐的标准跨域方案。

Django 解决跨域问题

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

  1. 安装库:
pip install django-cors-headers
  1. 在 settings.py 中添加应用:
    安装cors-headers应⽤
# 注册应用
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','corsheaders',  # 解决跨域CORS]
  1. MIDDLEWARE中启用中间件:(cors放在所有中间件的最外层,这样可以第一时间被检测,避免无意义的操作)
# 中间件
MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware',  # 最外层的中间件'django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]
  1. 添加⽩名单,配置 CORS_ORIGIN_WHITELIST
CORS_ORIGIN_WHITELIST = ('http://127.0.0.1:80','http://localhost:80',
)
CORS_ALLOW_CREDENTIALS = True  # 跨域时允许携带cookie
CORS_ORIGIN_ALLOW_ALL = True # 设置为 True 意味着接受任意跨域请求,这是非常危险的行为,上线时一定要设置为 False。CORS_ORIGIN_ALLOW_ALL = True,那么 CORS_ORIGIN_WHITELIST 和 CORS_ALLOW_METHODS 等其他CORS相关配置将不再起作用。CORS_ALLOW_METHODS = ('DELETE','GET','OPTIONS','PATCH','POST','PUT','VIEW',
)CORS_ALLOW_HEADERS = ('www-authorization','XMLHttpRequest','X_FILENAME','accept-encoding','authorization','content-type','dnt','origin','user-agent','x-csrftoken','x-requested-with','Pragma',
)

此外,需要注意:

  • 不要使用 ‘*’ 来接受任意域名访问
  • 明确设置 allowed methods、headers 等来增加安全性
  • 在生产环境中关闭 DEBUG 模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/65008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图解 STP

网络环路 现在我们的生活已经离不开网络,如果我家断网,我会抱怨这什么破网络,影响到我刷抖音、打游戏;如果公司断网,那老板估计会骂娘,因为会影响到公司正常运转,直接造成经济损失。网络通信中&…

基于Matlab利用IRM和RRTstar实现无人机路径规划(附上源码+数据+说明+报告+PPT)

无人机路径规划是无人机应用领域中的关键问题之一。本文提出了一种基于IRM(Informed RRTstar Method)和RRTstar(Rapidly-exploring Random Tree star)算法的无人机路径规划方法,并使用Matlab进行实现。该方法通过结合I…

设计模式行为型-状态模式

文章目录 简介状态模式基础定义状态接口或抽象类实现具体状态类 上下文类与状态转换上下文类的定义和作用状态转换及触发条件 状态模式的优势与适用性优点一:可维护的代码优点二:清晰的状态管理适用场景一:对象拥有多个状态适用场景二&#x…

【Unity】常见的角色移动旋转

在Unity 3D游戏引擎中,可以使用不同的方式对物体进行旋转。以下是几种常见的旋转方式: 欧拉角(Euler Angles):欧拉角是一种常用的旋转表示方法,通过绕物体的 X、Y 和 Z 轴的旋转角度来描述物体的旋转。在Un…

区块链技术与应用 - 学习笔记1【引言】

大家好,我是比特桃。本系列主要将我之前学习区块链技术时所做的笔记,进行统一的优化及整合。其中大量笔记源于视频课程:北京大学肖臻老师《区块链技术与应用》公开课。肖老师的课让我找回了求知若渴般的感觉,非常享受学习这门课的…

内存管理方式

内存管理 一、C/C内存分布1、内存空间的介绍2、示例题目3、示例题目图解 二、C语言动态内存管理方式1、代码2、介绍 三、C内存管理方式1、概念2、代码3、代码所代表的意义 四、new和delete操作自定义类型1、代码2、运行结果3、特点 五、operator new与operator delete函数1、概…

Eureka 注册中心的使用

环境 springboot springcloud Eureka-Server注册中心服务端 pom.xml导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><version>2.2.7.RELEAS…

Go的数据结构-hashmap

开放寻址法和拉链法 runtime.hamp bucket的数据结构 bucket的指针指向这里 map初始化&#xff1a;make 和字面量 make初始化 新建一个hamp结尾体&#xff0c;计算大B&#xff0c;创建一个桶数组 字面量初始化 map的并发解决 sync.map

无涯教程-JavaScript - QUARTILE函数

QUARTILE函数取代了Excel 2010中的QUARTILE.INC函数。 描述 该函数返回数据集的四分位数。四分位数通常用于销售和调查数据中,以将人群分为几类。 语法 QUARTILE (array,quart)争论 Argument描述Required/OptionalArrayThe array or cell range of numeric values for whi…

怎么提取视频中的音乐保存到本地?其实方法很简单

当你想要使用视频中的音乐时&#xff0c;你可以考虑将它从视频中提取出来。这可以用于制作音频样本集&#xff0c;制作铃声或其他音频素材&#xff0c;或者向其他人展示视频的音乐部分而无需显示视频本身。如果你是一位音乐制作人员&#xff0c;你可能会需要一些特定类型的音效…

CP Autosar-Ethernet配置

文章目录 前言一、Eth层级结构介绍二、Autosar实践2.1 ETH Driver2.2 Eth InterfaceEth Interface Autosar配置2.3 TcpIp模块Eth TcpIp Autosar配置2.4 SoAdEth SoAd配置前言 因汽车E/E架构和功能的复杂度提升而带来的对车辆数据传输带宽提高和通讯方式改变(基于服务的通讯-S…

JavaScript(函数,作用域和闭包)

目录 一&#xff0c;什么是函数1.1&#xff0c;常用系统函数1.2&#xff0c;函数声明 1.3&#xff0c;函数表达式二&#xff0c;预解析2.1&#xff0c;函数自调用 2.2&#xff0c;回调函数三&#xff0c;变量的作用域3.1&#xff0c;隐式全局变量 四&#xff0c;作用域与块级作…

TDengine函数大全-转换函数

以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 转换函数 TDengine函数大全CASTTO_ISO8601TO_UNIXTIM…

Seaborn绘制热力图的子图

Seaborn绘制热力图的子图 提示&#xff1a;如何绘制三张子图 绘制的时候&#xff0c;会出现如下问题 &#xff08;1&#xff09;如何绘制1*3的子图 &#xff08;2&#xff09;三个显示条&#xff0c;如何只显示最后一个 提示&#xff1a;下面就展示详细步骤 Seaborn绘制热力…

您的计算机已被.makop勒索病毒感染?恢复您的数据的方法在这里!

引言&#xff1a; 近年来&#xff0c;网络犯罪日益猖獗&#xff0c;各种恶意软件不断涌现&#xff0c;其中一种备受关注的就是勒索病毒。 .Makop 勒索病毒&#xff08;也被称为 Makop Ransomware &#xff09;是其中的一种&#xff0c;它以其恶意加密用户文件并勒索赎金的手法&…

HTTP请求超时:问题、原因与解决方案

引言 在互联网应用程序中&#xff0c;HTTP请求是实现数据传输和请求响应的核心过程。然而&#xff0c;有时候这个过程可能会因为各种原因而出现超时&#xff0c;导致用户无法及时获取所需信息&#xff0c;甚至引发系统崩溃。本文将深入探讨HTTP请求超时的原因&#xff0c;并提…

vue 根据数值判断颜色

1.首先style样式给两种颜色 用:class 三元运算符判断出一种颜色 第一步&#xff1a;在style里边设置两种颜色 .green{color: green; } .orange{color: orangered; }在取数据的标签 里边 判断一种颜色 :class"item.quote.current >0 ?orange: green"<van-gri…

单片机-控制按键点亮LED灯

1、按键电路图 定义四个按键引脚 1、按键按下 为 输入为低电平 2、按键不按下 IO有上拉电阻&#xff0c;为高电平 // 定义 按键的 管教 sbit KEY1 P3^1; sbit KEY2 P3^0; sbit KEY3 P3^2; sbit KEY4 P3^3; 2、LED灯电路图 LED 输出高电平为亮 // 定义LED灯 管教 sbit LED1…

bazel相关资料来源

bazel官方中文文档 bazel官方中文文档网址2 Bazel学习笔记 如何评价 Google 开源的 Bazel &#xff1f; Bazel使用了解 编译构建工具-bazel 如何挖掘 Bazel 的极致性能 如何挖掘 Bazel 的极致性能_其它网站 Bazel入门(4. Remote Cache) Google Open Source Live "B…

【运维】hadoop 集群安装(三)hdfs、yarn集群配置、nodemanager健康管理讲解

文章目录 一. 配置说明1. hadoop各进程环境配置2. hadoop各进程配置2.1. etc/hadoop/core-site.xml2.2. etc/hadoop/hdfs-site.xml2.2.1. NameNode2.2.2. datanode 2.3. etc/hadoop/yarn-site.xml2.3.1. ResourceManager and NodeManager2.3.2. ResourceManager2.3.3. NodeMana…