vue+springboot实现项目的CORS跨域请求

好的。我们来详细讲解一下vue和springboot结合实现CORS跨域请求的完整攻略。

什么是CORS

CORS是指跨域资源共享(Cross-Origin Resource Sharing)。是一个W3C标准,它允许浏览器进行跨域访问,从而使web应用可以使用其它域名下的资源。

为什么需要CORS

在开发前后端分离的web应用时,经常会有前端页面和后台服务在不同的域名下。而由于浏览器的同源策略,不同域名下的请求默认是不能相互访问的。这时就需要CORS技术来解决跨域问题。

实现步骤

以下将介绍基于vue和springboot结合的CORS跨域请求的具体步骤。

1. 设置vue代理

在vue.config.js文件中添加proxyTable选项来设置代理。

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/api'
        }
      }
    }
  }
}

其中,/api是指代理的路径,target是指代理的目标地址,这里是后台服务的地址。

2. 后台添加CORS过滤器

在springboot中添加CORS过滤器,这里使用spring的CorsFilter来实现。

@Configuration
public class CorsFilterConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用
        corsConfiguration.addAllowedHeader("*"); // 允许任何头
        corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/api/**", buildConfig()); // 对api路径下的请求应用CORS过滤器
        return new CorsFilter(source);
    }
}

3. 测试CORS跨域请求

可以尝试发送一个跨域请求到后台服务,查看接口返回是否正常。以下是两个可能的跨域请求测试示例:

示例1

axios.get('/api/test').then(res => {
  console.log(res.data);
})

其中,/api/test是后台提供的接口路径。

示例2

fetch('/api/test', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'user'
  })
}).then(res => res.json()).then(data => {
  console.log(data);
})

这里使用了fetch API来发送请求。

总结

以上是vue和springboot结合实现CORS跨域请求的完整攻略。在前端中,我们通过设置代理来实现跨域请求;在后端中,我们添加CORS过滤器来允许跨域请求。这样我们就能够在开发过程中自由地使用不同域名的资源了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+springboot实现项目的CORS跨域请求 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 【考试记录】Apsara Clouder云计算技能认证:云存储:对象存储管理与安全

    一:考试总结 这个也是很简单的,在考试之前自己就用过,所以不管是视频内容还是实验内容都不是很多,视频倒是挺挺新的,是2020年3月份录制的。个人感觉视频内容干货一般般,也有自己没太接触过的东西,实验的话,有点Linux基础,真的不难,大都是复制名字,改改参数就可以了,要是不熟悉Linux命令的话可能得稍微花的时间长点。还是那句话,知识点大多都是让你熟悉阿里的…

    云计算 2023年4月13日
    00
  • 边缘计算与云计算的不同,这篇说明白了!

    术语“边缘计算”是指一种分布式计算,是将数据存储和计算带到需要它的站点或设备附近,这种分配设置消除了滞后时间并节省了带宽。 与“物联网”相比,这是一种针对云环境的优化方法。它在数据源附近(即网络的“边缘”)处理实时数据,尽可能靠近生成数据的站点而不是云、数据中心或数据存储位置运行应用程序。例如,如果车辆需要根据直接从传感器获取的数据自动计算燃料消耗,执行该操…

    云计算 2023年4月13日
    00
  • 2016 IBM云计算峰会前瞻 Doug Davis: IBM与Docker社区携手共进

    Doug Davis Doug Davis就职于IBM开源/标准部,致力于提升Docker及其他云原生技术,并将其集成至IBM云产品及服务中。在整个职业生涯中,他参与了很多有关其他开源项目及标准的工作,比如Cloud Foundry、Apache Axis、CIMI,以及大部分与SOAP相关的规范。在IBM与W3C、OASIS、DMTF等多家标准机构合作的过…

    云计算 2023年4月13日
    00
  • Python ORM框架SQLAlchemy学习笔记之数据查询实例

    下面我将详细讲解“Python ORM框架SQLAlchemy学习笔记之数据查询实例”的完整攻略。 概述 ORM框架是Object Relational Mapping的缩写,翻译成中文叫做对象关系映射。它的作用是在不需要手写查询语句的情况下,让开发者可以用对象的方式操作数据库。SQLAlchemy就是一个Python的ORM框架。 本文将详细讲解在Pyth…

    云计算 2023年5月18日
    00
  • 孟岩谈Erlang:并行计算和云计算

    ——写在《Erlang程序设计》出版之际 Erlang算不上是一种“大众流行”的程序设计语言,而且即使是Erlang的支持者,大多数也对于Erlang成为“主流语言”并不持乐观态度。然而,自从2006年以来,Erlang语言确实在国内外一批精英程序员中暗流涌动,光我所认识和听说的,就有不少于一打技术高手像着了魔一样迷上了这种已经有二十多年历史的老牌语言。这是…

    2023年4月10日
    00
  • python数据可视化pygal模拟掷骰子实现示例

    让我来详细讲解一下“Python数据可视化pygal模拟掷骰子实现示例”的完整攻略。 简介 Pygal是一个由Python编写的SVG图表制作工具,它可以用来创建各种类型的图表,包括线性图、条形图、散点图和仪表盘等。同时,Pygal也支持与Python交互,可以将数据导入到图表中进行数据可视化分析。在本文中,我们将利用Pygal模拟掷骰子,并将结果可视化为条…

    云计算 2023年5月18日
    00
  • 云计算、SaaS及框计算

         何为框计算?     前几天百度技术大会上,李彦宏提出百度“框计算”,通过百度搜索对话框,理解并给出用户的真实需求。例如,今天几点了,它不会单纯的以匹配关键字加PR(page rank)值的方式给出搜索结果,而是进行自然语义分析,理解用户的语句,给出现在是北京时间几点几刻的具体时间。百度提出“框计算”有借计算炒作的嫌疑。百度真实想表达的是它要努力实…

    云计算 2023年4月10日
    00
  • Python字符编码判断方法分析

    Python字符编码判断方法分析示例 简介 字符编码判断在Python编程中非常重要,因为有时我们需要处理多种字符编码的文件,如果不正确地判断字符编码,则可能会导致乱码或者其它问题。本文将详细介绍Python中判断字符编码的各种方法并给出示例。 方法一:使用chardet库 chardet是Python中一个非常流行的检测字符编码的库,可以通过pip安装。 …

    云计算 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部