Vue和Django前后端实现跨域

1.为什么要解决跨域:

        前端与后端分处不同的域名,因为客户端访问不同源的服务端时会遭到浏览器的同源策略的拦截,所以我们需要配置CORS,处理的方式有很多,先来说下自己学习到的。

2.前端处理跨域:

        前端项目是通过vite来创建的,需要在vue.config.js中配置,server部分是新增的跨域配置,如下:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  //配置跨域
  server: {
    port:'5173',           // 客户端的运行端口,此处也可以绑定vue运行的端口,当然也可以写在pycharm下
    host:'localhost', // 客户端的运行地址,此处也可以绑定vue运行的域名,当然也可以写在pycharm下
    // 跨域代理
    proxy: {
        '/api': {
            // 凡是遇到 /api 路径的请求,都映射到 target 属性  /api/header/  ---> http://api.luffycity.cn:8000/header/
            target: 'http://127.0.0.1:8000/',
            changeOrigin: true,
            ws: true,    // 是否支持websocket跨域
            rewrite: path => path.replace(/^\/api/, '')
        }
    }
  }

})

         配置了跨域配置之后,启动vue项目如果能正常启动,则说明前端配置无误,在这里犯了一个小错误,在host中带了前缀“http”导致项目启动报错,报错信息如下:

3.模拟请求跨域

        之前在处理跨域的时候听人家说处理跨域的方法有好几种,其中有一种就是上述在vite创建项目前端中配置,模拟请求发现报错,如下所示:

        用get请求通过后端接口:http://127.0.0.1:8000/home/test获取redis中的数据进行打印。

<template>
  <Header></Header>
  
  <Footer></Footer>
</template>

<script setup>
import Header from "../components/Header.vue"
import Footer from "../components/Footer.vue"

// 测试CORS的跨域配置是否有问题
import axios from "axios"
const http = axios.create()

// 测试服务端的跨域是否配置成功
http.get("http://127.0.0.1:8000/home/test").then(response=>{
  console.log(response.data);
})
</script>



<style scoped>

</style>

         前端请求报错如下所示:

         报错信息:localhost/:1 Access to XMLHttpRequest at 'http://127.0.0.1:8000/home/test' from origin 'http://localhost:5173' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方法:在后端也做一些跨域的配置

4.后端处理跨域:

安装django-cors-headers库:

pip install django-cors-headers

在Django项目的settings.py中进行配置:

INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
]

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

# 允许所有域名访问
CORS_ALLOW_ALL_ORIGINS = True

# 或者允许特定域名访问
# CORS_ALLOWED_ORIGINS = [
#     "http://localhost:5173",
# ]

        再次在前端发起请求,能够正常从redis中获取到数据,如下所示:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM运行时内存:程序计数器

文章目录 1. 程序计数器的作用2. 程序计数器的基本特征3. 程序计数器的问题 运行时内存整体结构如下图所示: 1. 程序计数器的作用 为了保证程序(在操作系统中理解为进程)能够连续地执行下去&#xff0c;CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作…

文档分类FastText模型 (pytorch实现)

文档分类FastText FastText简介层次softmaxN-gram特征FastText代码&#xff08;文档分类&#xff09; FastText简介 FastText与之前介绍过的CBOW架构相似&#xff0c;我们先来会议一下CBOW架构&#xff0c;如下图&#xff1a; CBOW的任务是通过上下文去预测中间的词&#xff0…

ES6之数值的扩展

1. 数值的扩展 1.1. 二进制和八进制字面量表示:1.2. 数值判断方法: 1.2.1. Number.isFinite() 检查一个值是否为有限的数值。1.2.2. Number.isNaN() 更准确地检测NaN值。1.2.3. 传统的全局方法 isFinite() 和 isNaN() 的区别 1.3. 数值转换方法:1.4. 整数检查与精度: 1.4.1. Nu…

探秘Web3科技:科技变革的下一个风口

引言 随着互联网的发展&#xff0c;我们正处于一个数字化时代&#xff0c;而Web3技术被认为是数字革命的下一个风口。相较于传统的Web2&#xff0c;Web3技术以其去中心化、安全可信的特点&#xff0c;正在引领着科技变革的潮流。本文将深入探讨Web3科技&#xff0c;揭示其背后…

可用在vue自动导入的插件unplugin-auto-import

在大多数vue3开发中&#xff0c;基本所有页面都会引用vue3 componsition api&#xff0c;如下代码 想这种vue3 架构中自带的api&#xff0c;如果在全局配置一下的话&#xff0c;就可以减少一部分代码量&#xff0c;只是在代码编译的时候&#xff0c;会添加相应的引用&#xff…

后台菜单数据递归展示

后台菜单数据递归展示 效果示例图aslide.vueaslideItem.vuemenu 效果示例图 aslide.vue <script setup>import {ref} from vue;const props defineProps({isCollapse: {type: Boolean,default: false}});import AslideItem from "./aslideItem.vue"const def…

ADS使用记录之使用RFPro进行版图联合仿真

ADS使用记录之使用RFPro进行版图联合仿真 在ADS中&#xff0c;我们往往使用EM仿真来明确电路的实际性能&#xff0c;但是常规的方法我们只会得到S参数&#xff0c;对于场还有电路的电流分布往往不进行检查。但是在实际中&#xff0c;观察场和电流分布是非常有意义的&#xff0…

Qt编译和使用freetype矢量字库方法

在之前讲过QT中利用freetype提取字库生成图片的方法&#xff1a; #QT利用freetype提取字库图片_qt freetype-CSDN博客文章浏览阅读1.2k次。这是某个项目中要用到的片段&#xff0c;结合上一篇文章#QT从字体名获取字库文件路径使用// 保存位图int SaveBitmapToFile(HBITMAP hBi…

如何使用一段传输线表示电感和电容

文中部分图片来自于《complete Wireless design》 如何使用一段传输线来表示电感和电容&#xff0c;本文将就此内容展开&#xff1a;

Python 渗透测试:反弹 shell (反弹 后门 || 程序免杀)

什么叫 反弹 shell 反弹 shell (Reverse Shell) 是一种常见的渗透测试技术,它指的是受害者主机主动连接攻击者的主机,从而让攻击者获得对受害者主机的控制权。在一个典型的反弹 shell 攻击中,攻击者会在自己的主机上监听一个特定的端口,然后诱使目标主机主动连接到这个端口。当…

react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)

useReducer 可看做升级版的 useState &#xff0c;其强大之处在于&#xff0c;可以自定义复杂的响应式变量修改逻辑。 useReducer 语法 useReducer 是 hook 函数 第一个参数&#xff08;必要&#xff09;&#xff1a; 自定义的 reducer 函数&#xff08;详见下文介绍&#xff…

图片转base64【Vue + 纯Html】

1.template <el-form-item label"图片"><div class"image-upload-container"><input type"file" id"imageUpload" class"image-upload" change"convertToBase64" /><label for"imageU…

AI图书推荐:ChatGPT 和Power BI驱动未来金融投资变革

《ChatGPT 和Power BI驱动未来金融变革》&#xff08;The Future of Finance with ChatGPT and Power BI&#xff09;由James Bryant和Aloke Mukherjee撰写&#xff0c;探讨了ChatGPT和Power BI在金融领域的应用。 主要特点&#xff1a; - 使用ChatGPT自动化Power BI&#xff…

工厂数字化解决方案

在数字化浪潮席卷全球的今天&#xff0c;工业4.0已不再是遥不可及的梦想&#xff0c;而是制造业转型升级的必由之路。面对日益激烈的市场竞争和消费者需求的快速变化&#xff0c;传统工厂如何借助数字化技术实现智能化、高效化、柔性化生产&#xff0c;成为了摆在每一个企业面前…

创新指南 | 企业AI战略实施方案探讨(下):如何基于AI重构业务流程并落地实施

人工智能&#xff08;AI&#xff09;的浪潮已经席卷全球&#xff0c;成为推动现代企业发展的强大动力。AI技术不仅提升了企业的运营效率&#xff0c;还催生了新的商业模式和市场机会。本文将深入探讨AI的革新性应用案例&#xff0c;并提供一套企业落地AI的具体实施方案&#xf…

一次tomcat闪退处理

双击tomcat目录下bin目录中startup.bat 在我的电脑上是一闪而过&#xff0c;不能正常地启动tomcat软件 以记事本打开startup.bat文件&#xff0c;在文件的结尾处加上pause 然后再双击该bat执行&#xff0c;此时窗口就不会关闭&#xff0c;并会将错误信息打印在提示框中 可能是…

信息系统项目管理师0601:项目立项管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 项目立项管理 — 考点总结(可直接理解记忆) 1.项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是对拟建项目提出的框架性的总体设想。在项目建议书批准后,方可开展对外工作(掌握)。 2.项目建议书应该包括的核心内…

绝地求生:PGS3参赛队伍跳点一览,17压力有点大,4AM与PeRo大概率不roll点

在PCL春季赛结束后&#xff0c;PGS3的参赛队伍名单以及分组就正式确定了&#xff0c;最后确定名额的DDT和NH被安排在了A组和B组&#xff0c;感觉这次PGS3的分组比较均衡&#xff0c;没有“死亡之组”一说。这段时间已经有网友汇总了PGS3队伍在各个地图的跳点&#xff0c;并且把…

总结!AI Agent开发的常见方法

全球首位AI程序员Devin诞生了&#xff0c;还是个全栈工程师&#xff0c;能够熟练进行云端部署、编写底层代码、改bug、甚至连训练和微调AI大模型都轻车熟路&#xff0c;说好的AI替代人类&#xff0c;难道先从程序员下手了&#xff1f; 实际上用AI打造程序员并不是那么新鲜的事情…

读人工智能时代与人类未来笔记04_理性时代

1. 理性时代 1.1. 康德在《永久和平论》一文中带着些许的怀疑主义提出&#xff0c;和平可以通过应用达成一致的规则管理独立国家之间的关系来实现 1.2. 理性则借助高等理论物理学的形式&#xff0c;开始进一步探索康德的“自在之物”&#xff0c;并产生…