解决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的跨域问题 的相关文章

  • ValueError:以 10 为基数的 int() 的文字无效:

    当我尝试将一些数据插入 django 模型时 我收到此值错误 我的Python脚本是 from task employeeDetails models import EmployeeDetails def dumpdata userName
  • 如何使用 Python 避免在 JSON 中的 HTML 标签中关闭“/”?

    注意 这个问题非常接近在脚本标签中嵌入 JSON 对象 https stackoverflow com questions 4176511 embedding json objects in script tags 但是对该问题的回答提供了
  • 在django中使用uuid查询对象

    我正在使用 uuid 创建一个 id 字段 该字段是主键 如下所示 import uuid class User Profile models Model id models UUIDField primary key True defau
  • 如何在 Django 管理员索引中分离不同模块中的模型?

    我想在管理索引中分离我的应用程序的模型 我将所有模型注册在admin py我将所有这些都放在大红色 1 下的默认管理索引中 如下所示 现在我想将我的一些模型放在另一个 块 中 如下图大红色 2 下方所示 为了让它变得更难 我还需要在两个 块
  • 将现有的 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

    我不想毁掉我网站上的所有用户 但我想利用 Django 1 5 的自定义可插入用户模型 这是我的新用户模型 class SiteUser AbstractUser site models ForeignKey Site null True
  • 如何向 django 中的用户模型添加自定义权限?

    默认情况下 在 django 中 当安装了 django contrib auth 的情况下运行syncdb时 它会在每个模型上创建默认权限 如 foo can change foo can delete 和 foo can add 要向模
  • Django + 后台任务如何初始化

    我有一个基本的 django 项目 用作 Condor 计算集群的前端接口来生成模拟 用户可以从 django 应用程序开始模拟 在 Condor 中 与仿真相关的元数据和仿真状态保存在数据库中 我需要添加一个新功能 某些 模拟完成时发出通
  • 如何在 Django 管理中的 TabularInline 表单集中设置默认值

    如何在 django admin 的内联中设置第一个默认行 值 class Employee models Model username models CharField Username max length 150 null False
  • 每次都在django查询数据库中过滤查询集吗?

    想象一下我有以下代码 qs Users objects all list for i in range 10 list append qs filter age i 这里过滤器被调用 10 次 它是连接到数据库 10 次还是第一次使用过滤器
  • 查询中的自定义属性

    鉴于下面的简化示例 我将如何访问查询集中的自定义 current status 属性 有可能吗 目前 我想列出所有当前事件并显示当前状态 我可以让属性显示在模板中 但我无法通过它来排序查询集 或者 我是否需要在 选择 中创建一个带有某种嵌套
  • Django 1.8 - migrate 和 makemigrations 有什么区别?

    根据这里的文档 https docs djangoproject com en 1 8 topics migrations https docs djangoproject com en 1 8 topics migrations 它说 m
  • Django:如何将 Django Rest 框架集成到现有应用程序中?

    我应该如何将 Django REST API 框架集成到现有应用程序中 或者我必须创建一个新项目 您不需要开始一个新项目 基本步骤是 安装DRF 类似pip install djangorestframework Add rest fram
  • 安装 python 包时出错

    我无法从两者安装 python 包pip and easy install 一些荒谬的错误不断出现 请帮助纠正它 我在使用时遇到同样的错误python setup py install 安装时出错Django memcached C Use
  • 修改不同Django用户的会话数据

    这可能不可能 但是当某些情况发生时 我想修改某些登录用户的会话数据 标记一些额外的逻辑需要在下次加载页面时运行 有没有办法通过用户 ID 访问用户的会话 tldr Query Session模型 然后通过修改匹配会话SessionStore
  • Daphne Django 文件上传大小限制

    我使用 Daphne 进行套接字和 http 连接 我正在运行 4 个工作容器 并且现在在 docker 容器中本地运行所有内容 如果我尝试上传 400MB 的文件 我的 daphne 服务器会失败 它适用于最大 15MB 的小文件 我的
  • Django 视图集没有属性“get_extra_actions”

    我第一次使用 Django 我正在尝试构建一个 API 我正在遵循一些教程和示例 它工作正常 但在安装所有要求和项目后 我现在正在 Raspberry Pi 中运行该项目失败并出现以下错误 Performing system checks
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • Django 模板:输出带有所有小数位的浮点数

    我如何在 django 模板中输出这个数字 小数位数是可变的 我事先不知道 x 0 000015 1 x 输出是 1 5e 05 2 x stringformat f 输出是 0 000015 这不是本地化的 应该有逗号 我需要对输出进行本
  • 在 Django(Python) 中向用户提供 Excel(xlsx) 文件下载

    我正在尝试使用 Django 创建和提供 Excel 文件 我有一个 jar 文件 它获取参数并根据参数生成 excel 文件 并且它可以正常工作 但是 当我尝试获取生成的文件并将其提供给用户下载时 文件损坏了 它的大小为 0kb 这是我用
  • 禁用或限制 /o/applications(django rest 框架、oauth2)

    我目前正在使用 Django Rest 框架编写 REST API 并使用 oauth2 进行身份验证 使用 django oauth toolkit 我对他们俩都很满意 他们做的正是我想要的 然而 我有一个担忧 我正在将我的应用程序传递到

随机推荐

  • 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 解决