首页 > 其他分享 >使用Spring Boot实现跨域资源共享(CORS)

使用Spring Boot实现跨域资源共享(CORS)

时间:2024-07-12 11:08:22浏览次数:18  
标签:跨域 Spring CORS springframework org import annotation

使用Spring Boot实现跨域资源共享(CORS)

大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!

1. CORS概述

跨域资源共享(CORS)是一种机制,使用额外的HTTP头部来告诉浏览器允许运行在一个域上的Web应用访问来自不同源服务器上的指定资源。在现代Web应用中,由于安全策略的限制,经常需要处理跨域请求。

2. Spring Boot中配置CORS

在Spring Boot中,可以通过配置来实现CORS支持。下面是一个示例,展示了如何配置Spring Boot应用以允许特定的域访问资源。

package cn.juwatech.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:8080")  // 允许访问的源地址
                .allowedMethods("GET", "POST", "PUT", "DELETE")  // 允许的请求方法
                .allowedHeaders("*")  // 允许的请求头
                .allowCredentials(true)  // 是否支持发送Cookie
                .maxAge(3600);  // 预检请求的有效期,单位秒
    }
}

3. 示例代码说明

上述代码中,我们创建了一个WebConfig类,并实现了WebMvcConfigurer接口。在addCorsMappings方法中,配置了跨域请求的细节:

  • .addMapping("/**"):允许所有路径的请求。
  • .allowedOrigins("http://localhost:8080"):指定允许访问的源地址,这里是http://localhost:8080
  • .allowedMethods("GET", "POST", "PUT", "DELETE"):允许的HTTP请求方法。
  • .allowedHeaders("*"):允许的请求头。
  • .allowCredentials(true):是否允许发送Cookie。
  • .maxAge(3600):预检请求的有效期,单位秒。

4. 在Controller中使用CORS

除了全局配置外,还可以在具体的Controller类或方法上使用@CrossOrigin注解来配置CORS。

package cn.juwatech.controller;

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://localhost:8080")
public class MyController {

    @GetMapping("/data")
    public String getData() {
        return "Data from API";
    }
}

在上述示例中,@CrossOrigin(origins = "http://localhost:8080")指定了/api/data接口允许来自http://localhost:8080的跨域请求。

5. 配置细节说明

  • allowedOrigins:允许的源地址,可以配置多个。
  • allowedMethods:允许的HTTP方法,如GET、POST等。
  • allowedHeaders:允许的请求头,可以配置具体的头信息。
  • allowCredentials:是否支持发送Cookie。
  • maxAge:预检请求的有效期,避免浏览器频繁发送预检请求。

6. 总结

本文介绍了在Spring Boot中如何配置和使用CORS来处理跨域资源共享问题。通过配置全局的WebConfig类或使用@CrossOrigin注解,可以灵活地控制哪些域名和资源可以进行跨域访问,从而确保Web应用程序的安全性和可用性。

著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!

标签:跨域,Spring,CORS,springframework,org,import,annotation
From: https://www.cnblogs.com/szk123456/p/18297902

相关文章

  • 【微服务】SpringCloud-eureka光速入门
    SpringCloud-eureka光速入门一、Eureka主要组件二、工作流程三、优势四、Eureka-光速入门【重点】4.1案例准备4.1.1创建父工程tingyi-shop4.1.2创建子工程tingyi-goods4.1.3创建子工程tingyi-order4.1.4案例调整4.1.4.1在order模块创建RestTemplate对象4......
  • Spring Aop 获取入参和出参
    1.概述本次,我利用SpringAop的注解方式获取切入点的入参和出参,因为比较简单,所以就直接上代码了。2.代码编写注解类/***日志注解**@authorJiantaoYan*@title:Log*@date2021/1/520:33*/@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUN......
  • Spring AOP 切面执行顺序
    1.概述1.1术语SpringAOP的相关术语:Aspect:切面,由一系列切点、增强和引入组成的模块对象,可定义优先级,从而影响增强和引入的执行顺序。事务管理(Transactionmanagement)在java企业应用中就是一个很好的切面样例。Joinpoint:接入点,程序执行期的一个点,例如方法执行、类初始化、......
  • Java毕业设计基于Vue+SpringBoot的电影院订票选座管理系统(代码+数据库+文档LW+运行成
    很多朋友发现后期找不到文章,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍在飞速发展的今天,网络已成为人们重要的交流平台。电影院每天都有大量的需要通过网络发布,为此,本人开发了一个基于B/S;浏览器/服务器;模式的电影院管理系统。该系......
  • Java毕业设计基于Vue+SpringBoot的畅游游戏销售平台(代码+数据库+文档LW+运行成功)
    很多朋友发现后期找不到文章,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,畅游游戏销售平台利用计算机网络实现信息化管理,使整个畅游游戏销售平......
  • Java毕业设计基于Vue+SpringBoot的爱看漫画小程序(代码+数据库+文档LW+运行成功)
    很多朋友发现后期找不到文章,收藏关注不迷路文章目录项目介绍技术介绍项目界面关键代码目录项目介绍相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低爱看漫画的运营人员成本,实现了爱看漫画的标准化、制度化、程序化的管理,有效地防止了爱看漫画的随意管......
  • 使用Spring Boot集成Elasticsearch
    使用SpringBoot集成Elasticsearch大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!Elasticsearch是一个分布式搜索和分析引擎,特别适用于处理海量数据。本文将详细介绍如何在SpringBoot项目中集成Elasticsearch,包括环境配置、基本CRUD操作和常见问题的解......
  • 使用Spring Boot实现任务调度
    使用SpringBoot实现任务调度大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在日常开发中,任务调度是一个非常常见的需求,例如定时清理日志、定时备份数据、定时发送通知等。SpringBoot提供了强大的任务调度功能,可以方便地实现定时任务。本文将详细介绍如......
  • 使用Spring Boot实现文件上传功能
    使用SpringBoot实现文件上传功能大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在这篇文章中,我们将详细介绍如何使用SpringBoot实现文件上传功能。这是一个常见的需求,无论是处理用户上传的图片、文档,还是其他类型的文件,了解并掌握文件上传的实现是非常......
  • 基于java+springboot+vue实现的在线教育系统(文末源码+Lw)111
    基于SpringBoot+Vue的实现的在线教育系统(源码+数据库+万字Lun文+流程图+ER图+结构图+演示视频+软件包)系统功能:本在线教育系统管理员功能有个人中心,用户管理,讲师管理,普通管理员管理,课程管理员管理,课程管理,课程分类管理,教师管理,名师管理,系统管理,订单管理。普通管理员和课程......