前后端跨域请求代码实战(vue3.4+springboot2.7.18)

news2024/11/18 9:05:39

在这里插入图片描述

  • 前端代码 v3.4.21(前端不是主业,所以就贴一贴代码,有疑问评论区见)
  • 后端代码,springboot 2.7.18(后端)

文章内容:
一,后端代码
二,前端代码
三,后端跨域配置
四,测试跨域配置

一,后端:

在这里插入图片描述
接口一:
在这里插入图片描述

接口二:
在这里插入图片描述
启动测试一下接口:
在这里插入图片描述
在这里插入图片描述

二,前端

初始化vue3项目教程链接:vue3环境搭建
此时我们就有了前端工程
在这里插入图片描述

App.vue文件

<script setup>
import t1Query1 from "./components/t1query1.vue"
import t2Query1 from "./components/t2query1.vue"
</script>

<template>
  <t1Query1/>
  <t2Query1/>
 </template>

main.js文件

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

创建 t1query1.vue 文件(通过点击按钮调用后端接口返回数据到前端)

<template>
    <button @click="fetchData">test1query1获取数据</button>
    <p>{{ data }}</p>
  </template>
   
  <script>
  import { ref } from 'vue';
  import axios from 'axios';
   
  export default {
    setup() {
      const data = ref('');
   
      const fetchData = async () => {
        try {
          const response = await axios.get('http://localhost:11111/yyx/test1/query1');
          data.value = response.data;
        } catch (error) {
          console.error('Error fetching data:', error);
        }
      };
      return {
        data,
        fetchData
      };
    }
  };
  </script>

创建 t2query1.vue 文件

<template>
    <button @click="fetchData">test2query1获取数据</button>
    <p>{{ data }}</p>
  </template>
   
  <script>
  import { ref } from 'vue';
  import axios from 'axios';
   
  export default {
    setup() {
      const data = ref('');
   
      const fetchData = async () => {
        try {
          const response = await axios.get('http://localhost:11111/yyx/test2/query1');
          data.value = response.data;
        } catch (error) {
          console.error('Error fetching data:', error);
        }
      };
      return {
        data,
        fetchData
      };
    }
  };
  </script>

启动前端项目 此时命令行执行:
cd 项目路径
npm install(当缺少node模块需要执行)
npm run dev
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
跨域存在于前端访问后端的过程,存在一个同源策略,具体可以自己搜搜

三,跨域

后端跨域配置代码:

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


/**
 * @program: my-back-app
 * @description: 跨域的方式:
 * 1.corsFilter的 bean
 * 2、下述方法
 * 3、nginx
 * 4 spring security 方式
 *   等等
 * @author: yangyixin
 * @create: 2024-04-19 11:07
 **/
@Configuration
@Slf4j
public class CORSConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        String frontUrl = "http://localhost:5173";

        //下述表示前端在访问后端的test1下的所有接口 都需要满足的规则要求
        registry.addMapping("/test1/**")// 该方法用于添加允许跨域访问的路径,String类型,若存在多个路径则需要在CorsRegistry里配置多个(填入后端从contrller以内的路径,不需要填入yml内的相关路径)
                .allowedOriginPatterns(frontUrl)//设置允许跨域请求的来源URL的模式。该方法接受多个参数,每个参数为一个允许的来源URL模式。或者设置"*"
                //.allowedOrigins("http://localhost:5173")  // 就设置允许跨域请求的来源URL。该方法接受多个参数,每个参数为一个允许的来源URL。或者设置"*"
                .allowedMethods("GET", "POST")   // 设置允许跨域请求的HTTP方法。该方法接受多个参数,每个参数为一种允许的HTTP请求方式
                .allowedHeaders("*")// 设置允许请求携带的HTTP头信息。该方法接受多个参数,每个参数为一种允许的HTTP头信息。(放行哪些请求头部信息)
                .allowCredentials(true)//设置是否允许跨域请求携带凭证信息。默认情况下,浏览器不会向跨域请求发送Cookie等凭证信息,如果希望携带凭证信息,则需要将allowCredentials方法设置为true
                .maxAge(3600);//设置响应的缓存时间,单位为秒,默认30分钟。例如,当设置maxAge为3600时,如果浏览器在一小时内再次向同一个目标URL发送跨域请求,

        //下述表示前端在访问后端的所有接口 都需要满足的规则要求
//        registry.addMapping("/**")
//                .allowedOriginPatterns(frontUrl)
//                //.allowedOrigins("http://localhost:5173")
//                .allowedMethods("GET", "POST")
//                .allowedHeaders("*")
//                .allowCredentials(true)
//                .maxAge(3600);
        log.info("跨域配置 允许访问:{}", frontUrl);

    }
}

四,测试

配置完成,重启后端项目
前端界面ok,进入前端界面(vue3不需要重新启动 前端界面也会刷新)
在这里插入图片描述
到此及配置跨域请求完毕

注意

  1. 注意 配置跨域中的addMapping方法的参数,不包括server.servlet.context-path的路径

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

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

相关文章

美创科技19周年数据安全案例展

2005-2024 践行“让数据更安全&#xff0c;更有价值”的使命 美创19年砌垒&#xff0c;与不同行业用户 一同筑牢数字之基 美创19周年案例展 走进这段时间长廊 探索美创与各行业伙伴的数据安全实践 #1 数据安全体系化建设 浙江省&#xff0c;数字化改革先行地。以数字化…

进程间通信(1)管道

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

抖音小店怎么做?新手起店只需三步,看这一篇就够了

大家好&#xff0c;我是电商笨笨熊 抖音小店现如今已经人尽皆知&#xff0c;只因为让不少的普通玩家有了做电商的机会。 但是对于新手小白来说&#xff0c;做抖店一定不要盲目&#xff0c;此项目固然能让众多人从个人走到团队化&#xff0c;但也要掌握方法。 所以今天我们就…

半导体存储电路知识点总结

目录 一、SR锁存器 1.SR锁存器的概念 2.作用 二、电平触发器&#xff08;Flip-Flop&#xff09; 1.时钟信号 2.电平触发的触发器电路结构 3.带异步置位复位的电平触发器 三、边沿触发器 1.特点 2.两个D触发器组成的边沿触发D触发器 3.CMOS边沿触发D触发器的典型电路 …

通过PyCharm平台开发Django应用程序

学会使用命令行工具开发Django应用程序是基础&#xff0c;不过更多的时候还是要借助平台开发工具。目前&#xff0c;最好的Django应用程序开发工具就是jetBrains公司推出的PyCharm平台了。 借助PyCharm开发平台&#xff0c;可以极大提高开发Django应用程序的效率&#xff0c;同…

R语言中的execl数据转plink

文章目录 带出外部连接的方式添加列的方式从列表中选出对应的数据信息查看变量信息没有成功 带出外部连接的方式 点击这个黄色的按钮就可以弹出外部链接的方式 添加列的方式 创建一个数据框的方式 我们创建一个三行三列的数据方式 df <- data.frame(name c("Alice&…

BUUCTF-MISC01金胖

题目&#xff1a;动图使用Stegsolve软件进行逐帧查看 下载文件后&#xff0c;图片隐写之gif多帧隐藏&#xff0c;这类题比较简单&#xff0c;只需要将图片使用Stegsolve软件进行逐帧查看就行了.file-open打开添加文件 将文件添加进来&#xff0c;而后点击Analyse-Frame Browse…

【linux运维】系统常见管理命令

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了学习基本的shell编程和linux命令&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于b站大学——linux运维课程进行的&#xff0c;…

【计算机毕业设计】二手车估值与销售网络平台产品功能介绍——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

C语言 ─── 操作符详解

目录 1. 算术操作符 2. 移位操作符 2.1 左移操作符 2.2 右移操作符 3. 位操作符 4. 复合赋值符 5. 单目操作符 6. 逗号表达式 7. 隐式类型转换 7.1 整型提升的意义&#xff1a; 7.2 如何进行整体提升呢&#xff1f; 8. 算术转换 ★★★数组名 1. 算术操作符 -…

动态IP与静态IP的区别,你选对了吗?

在互联网世界中&#xff0c;IP地址是每台设备在网络上的唯一标识。这些地址可以是动态的&#xff0c;也可以是静态的。对于非专业人士来说&#xff0c;理解这两者之间的区别可能会有些困难。本文旨在深入探讨动态IP和静态IP的主要差异&#xff0c;帮助读者根据自己的需求做出明…

在西非土地上播种希望

在西非这片广阔而充满活力的土地上播种希望&#xff0c;我们可以从多个维度进行解读和行动&#xff1a; 教育援助&#xff1a;投资于当地的教育事业&#xff0c;改善学校设施&#xff0c;提供教育资源&#xff0c;尤其是对女童教育的重视&#xff0c;让更多孩子有机会接受基础…

免费强大不限速的远程桌面工具推荐.

一、功能概述 此篇主要介绍,如果使用P2P实现远程桌面控制,如同teamviewer,向日葵一样.只是你不需要付费即可使用,而且我们更加安全. 你也可以直接使用windows自带的远程桌面功能,下面我介绍另一种方式. 二、使用步骤 1.下载远程控制程序安装包. 下载链接:点击下载 2.解压…

ai写作强大,ai写作哪个软件最好用?

在当今数字化时代&#xff0c;ai技术的发展正以惊人的速度改变着我们的生活和工作方式。其中&#xff0c;ai写作作为一项令人瞩目的创新&#xff0c;展示了强大的文本生成能力。然而&#xff0c;随着各种ai写作软件的涌现&#xff0c;人们不禁困惑&#xff1a;哪个软件才是最好…

提升Office 365网络效率的SD-WAN技术

在数字化办公环境中&#xff0c;Office 365已成为许多企业日常工作的核心平台。随着企业对云办公工具的依赖不断增加&#xff0c;对Office 365的性能和效率要求也日益提高。对于企业而言&#xff0c;加速Office 365已经成为提升工作效率、促进团队协作和提升竞争力的关键举措之…

2024大环境!2024创业项目小成本!2024创业新思路!2024创业新项目新商机!2024创业好项目!2024创业做什么行业前景好!

房子是永远都不会涨了&#xff0c;电车车企是突然间就开始降价抢市场&#xff0c;金价暴涨&#xff01;趋势瞬息万变&#xff01;今年是必须要做出改变的一年&#xff0c;因为这个世界正在以近乎疯狂的速度发生改变。跟上这波变化&#xff0c;将有机会重塑自己未来的人生。跟不…

目标检测——输电线路缺陷数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

k8s使用harbor私有仓库镜像 —— 筑梦之路

官方文档: Secret | Kubernetes ImagePullSecrets的设置是kubernetes机制的另一亮点&#xff0c;习惯于直接使用Docker Pull来拉取公共镜像&#xff0c;但非所有容器镜像都是公开的。此外&#xff0c;并不是所有的镜像仓库都允许匿名拉取&#xff0c;也就是说需要身份认证&…

redis与etcd的对比

1.redis是一种高级的key&#xff1a;value存储系统&#xff0c;其中value支持五种数据类型&#xff1a; 1.1 字符串&#xff08;strings&#xff09; 1.2 字符串列表&#xff08;lists&#xff09; 1.3 字符串集合&#xff08;sets&#xff09; 1.4 有序字符串集合&#xff08;…

杜牧是唐朝最风流的诗人

杜牧&#xff0c;有“杜紫薇”之称&#xff0c;是宰相杜佑的孙子。李白、杜甫是“大李杜”。杜牧、李商隐是“小李杜”。 杜牧23岁写了《阿房宫赋》&#xff0c;一朝成名天下知。 唐朝晚年&#xff0c;科举和仕途没有出路&#xff0c;杜牧寄情享乐。杜牧怀才不遇&#xff0c;…