解决Django和Flask的跨域问题

2023-10-27

问题引入:来自8080服务器的js中的动态接口请求,没能够真正发送给8000动态服务器;为什么会这样?!

2.1、概念:什么是同源;

答:浏览器以协议、域名和端口来标示一个资源的来源,如果协议、域名和端口相同则资源是同源的(意味来自相同的服务器)!

url
http://www.meiduo.site:8080
https://www.meiduo.site:8080
http://www.meiduo.site:8000
http://127.0.0.1:8000

浏览器判断是否同源的一个隐含规则:只判断协议、域名和端口的字面值

2.2、概念:什么是跨域请求?

答:来自A服务器的js,请求的目标是B服务器,那么这个请求称之为跨域请求

2.3、概念:浏览器的“同源策略”。

答:当浏览器处理一个跨域请求的时候,会主动询问目标主机是否允许此次跨域请求,在得到肯定答复之后才会真的发送此次跨域请求!

2.3.1、发生了跨域请求,浏览器在遵循“同源策略”下,处理流程如下:

在这里插入图片描述

2.3.2、没有发生跨域请求的情况下浏览器会直接发送请求,如下图:

在这里插入图片描述

3、解决Django的跨域问题

安装插件django-cors-headers

pip install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple
3.2、修改工程配置文件
ALLOWED_HOSTS = ['*']

INSTALLED_APPS = [
    # ......
    # 注册第三方应用
    'corsheaders', # 解决了跨域请求问题
    # ......
]

MIDDLEWARE = [
    # 添加一个中间件来响应跨域询问OPTIONS请求
    'corsheaders.middleware.CorsMiddleware',
    # ......
]

# 添加跨域白名单,指定允许跨域请求到8000的源
CORS_ORIGIN_WHITELIST = [
    'http://127.0.0.1:8080',
    'http://www.meiduo.site:8080',  # 注意,即使在hosts文件映射了127.0.0.1  www.meiduo.site,两者依然不是同源,只认字面值
]
# 或者使用:CORS_ORIGIN_ALLOW_ALL = True,表示允许所有跨域请求
# 表示跨域的多个主机之间共享cookie数据
CORS_ALLOW_CREDENTIALS = True
3.3、主机域名映射配置:

打开终端——使用vim打开 /etc/hosts文件:
在最后增加:127.0.0.1 www.meiduo.site

  1 127.0.0.1   localhost
  2 127.0.1.1   ubuntu
  3 
  4 # The following lines are desirable for IPv6 capable hosts
  5 ::1     ip6-localhost ip6-loopback
  6 fe00::0 ip6-localnet
  7 ff00::0 ip6-mcastprefix
  8 ff02::1 ip6-allnodes
  9 ff02::2 ip6-allrouters
 10 0.0.0.0 account.jetbrains.com
 11 
 12 
 13 127.0.0.1  www.meiduo.site

4、解决Flask的跨域问题

4.1 Flask组件flask-cors可以处理跨域问题, 安装

pip install flask-cors -i https://pypi.tuna.tsinghua.edu.cn/simple

4.2 在app初始化中对跨域组件初始化

from flask_cors import CORS

    # 6.允许跨域请求
    # app: 允许跨域的后端应用对象
    # supports_credentials=True 支持跨域的时候携带cookie,session,token
    # methods=[] 允许跨域的请求方法 默认:全部请求方法都允许跨域
     # CORS_ORIGINS = ['http://127.0.0.1:5000']  # 限定允许访问的域名, 不设置则全部允许
    CORS(app, supports_credentials=True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决Django和Flask的跨域问题 的相关文章

随机推荐

  • true_type与false_type

    std true type和std false type 实际上是类型别名 是两个类型 类模板 注意区分true type与false type与true和false区别 true type false type代表类型 true fals
  • 【项目实战】Python基于局部离群因子LOF算法(LocalOutlierFactor)实现信用卡数据异常值检测项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 代码讲解 如需数据 代码 文档 代码讲解可以直接到文章最后获取 1 项目背景 异常检测是数据挖掘领域研究的基本问题之一 已被广泛应用于网络入侵检测 信用卡欺诈侦查等领域 局部离群因子 简
  • 以太坊客户端Geth命令用法-参数详解

    Geth是在以太坊智能合约开发中最常用的工具 必备开发工具 一个多用途的命令行工具 熟悉Geth可以让我们有更好的效率 大家可收藏起来作为Geth命令用法手册 本文主要是对geth help的翻译 基于最新的geth 1 7 3 stabl
  • sqlite3查看数据库中有哪些表(代码)

    说实话 用代码实现sqlite3查看数据库中有哪些表我还真的没找到现成资源 网上提供的语句还真用不了 而且大多都是命令行语句 由于的做的MFC项目要用到这个功能 特意学习了下 下面分享我的成果 希望可以帮到你 环境 VS2005 inclu
  • FPGA中值滤波实现并Modelsim仿真,与MATLAB中值滤波进行对比

    文章目录 一 中值滤波算法 二 FPGA实现中值滤波 2 1 3 3窗口的生成 2 2 排序模块 2 3中值滤波模块 2 4 整体RTL图 三 modeslim仿真 四 matlab中值滤波 五 效果对比 一 中值滤波算法 1 中值滤波算法
  • 解决wangEditor表格边框显示不出来、没有的问题

    仔细阅读文档 不过我一直找表格或者边框搜索 发现没有特定的栏目 所以忽略了 当然也有我不够仔细的原因 有点着急莽荒了 链接 在官网的这个页面 从官网贴下来的 把这段复制到想要的地方就可以了
  • 自定义表单控件 [(ngModel)]

    ngModel 拆分 ngModel 将 输入 输出组合起来 进行双向数据绑定 拆分开来 输入属性 ngModel ngModelChange 输出监听元素值的变化 并同步view value与model value
  • 头都给我找烂

    mysql5 6下载 https dev mysql com downloads file id 487425 win10添加本地用户和组 https blog csdn net qq 40151857 article details 89
  • 【Linux命令集】top命令的用法详解

    在使用linux系统中 我们最长用的查看系统性能的方式就是使用命令top 通知我们只关心总体的cpu和内存的使用情况 对其他的参数基本无视 也看不懂 下面来介绍一下top的详细参数的意义 top视图 进入top的基本视图 我们来结合这个视图
  • 电容选型及计算

    一 电容容值计算 1 电容整流波形分析 经过整流后三相电压整流为六脉波电压 电压波形如下图 上图中各时期充电过程如下 在t0 t3阶段是一个T 6周期 一个完整波头阶段 在t0 t1阶段 电容放电 给负载提供能量 此时输入电压小于电容电压
  • openEuler实验之A-Tune智能调优

    1 A Tune介绍 A Tune是一款基于AI开发的系统性能优化引擎 它利用人工智能技术 对业务场景建立精准的系统画像 感知并推理出业务特征 进而做出智能决策 匹配并推荐最佳的系统参数配置组合 使业务处于最佳运行状态 1 1 A Tune
  • redis docker安装、进入命令行后启动服务

    下载redis镜像 首先查看一下redis是否正确 docker search redis 显示 NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source
  • 一文读懂工厂MES系统的详细功能介绍

    一 工单管理 MES通过工单来管理生产执行 工单状态有 创建 下达 执行 完成 取消 计划员创建工单 审核通过后释放到设备或产线 仓库可收到工单下达的通知 及时备料 产线只能看到已下达的工单 执行工单 完成后登记报工 将相关信息反馈回ERP
  • 网络编程——实现HTTP服务器端

    参考 TCP IP网络编程 尹圣雨 Web服务器端 概述 Web服务器端是 基于HTTP Hypertext Transfer Protocol 协议 将网页对应文件传输给客户端的服务器端 Hypertext 超文本 是可以根据客户端请求而
  • redis-----08-----redigo管道以及事务-管道

    1 Redis 管道 正常的情况下 redis是请求响应模式 一条请求后那么正常就会返回一个响应 例如上图 但是只存在这种情况是无法满足我们开发的需求的 所以redis给我们提供了管道 redis的管道 pipeline 相关特点 1 re
  • 概念数据模型(E-R模型)

    概念数据模型 E R模型 概念数据模型是现实世界第一层次的抽象 是数据库设计人员和用户交流的工具 因此要求概念数据模型一方面应该具有较强的语义表达能力 能够方便 直接地表达应用中的各种语义知识 另一方面应该简单 直观和清晰 能为不具备专业知
  • python前端学习-----Flask进阶

    Flask进阶 Flask请求 Request请求对象 request args get 获取表单提交的信息 请求钩子 Flask响应 json 数据格式 Cookie 和 Session Cookie 对象 Session对象 设置密钥的
  • VMware centos7 Destination Host Unreachable

    现象 不管是ping网关还是外网都出现了 root rocketmqOS ping 192 168 23 2 PING 192 168 23 2 192 168 23 2 56 84 bytes of data From 192 168 2
  • jsp文件上传图片到服务器

    jsp文件上传图片到服务器 首先利用onchange去调用uploadBookImg函数 将图片上传到服务器 返回一个地址 将地址写入到一个隐藏域里面 提交表单的时候就可以将服务器返回的地址存入到数据库里面
  • 解决Django和Flask的跨域问题

    目录 2 1 概念 什么是同源 2 2 概念 什么是跨域请求 2 3 概念 浏览器的 同源策略 2 3 1 发生了跨域请求 浏览器在遵循 同源策略 下 处理流程如下 2 3 2 没有发生跨域请求的情况下浏览器会直接发送请求 如下图 3 解决