`

SpringBoot解决cors跨域问题

阅读更多

1.使用@CrossOrigin注解实现

对单个接口配置CORS

@CrossOrigin(origins = {"*"})
    @PostMapping("/hello")
    @ResponseBody
    public ResultVO hello() {
        return new ResultVO(1,"成功");
    }

 对某个Controller下的所有接口配置CORS

@CrossOrigin
@Controller
public class HelloController {
 
}

 

2.配置全局的CORS

方法(1)添加配置类

package com.lzc.cors.config;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
 
@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.setAllowCredentials(true);
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

 方法(2)添加配置类

package com.lzc.cors.config;
 
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
 
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

 方法(3)使用Filter方法,还需要在启动类加上@ServletComponentScan注解

package com.lzc.cors.filter;
 
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
@WebFilter(urlPatterns = "*")
public class CorsFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
 
    }
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest)request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setCharacterEncoding("UTF-8");
        httpResponse.setContentType("application/json; charset=utf-8");
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");
        httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
        httpResponse.setHeader("Access-Control-Allow-Methods", "*");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization");
        httpResponse.setHeader("Access-Control-Expose-Headers", "*");
        filterChain.doFilter(httpRequest, httpResponse);
    }
 
    @Override
    public void destroy() {
 
    }
}

 

分享到:
评论

相关推荐

    Spring boot 和Vue开发中CORS跨域问题解决

    本文旨在详细阐述CORS跨域问题的背景、解决方法以及如何在Spring Boot和Vue.js的结合使用场景下处理跨域问题。 ### CORS跨域问题背景 CORS全称是Cross-Origin Resource Sharing,即跨源资源共享。这个概念是W3C的...

    解决Vue调用springboot接口403跨域问题

    解决Vue调用Spring Boot接口时出现的403跨域问题,可以通过在Spring Boot后端添加@CrossOrigin注解或者通过全局配置类来实现CORS支持。需要注意的是,这需要Spring Boot版本至少为2.x,因为旧版本可能不支持CORS相关...

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

    跨域资源共享CORS(Cross-origin Resource Sharing),是W3C的一个标准,允许浏览器向跨源的服务器发起XMLHttpRequest请求,克服ajax请求只能同源使用的限制。关于CORS的详细解读,可参考阮一峰大神的博客:跨域资源...

    Springboot CORS跨域设置.md

    Springboot CORS跨域设置

    Springboot处理CORS跨域请求的三种方法

    以下将详细介绍Spring Boot处理CORS跨域请求的三种方法。 1. **使用`@CrossOrigin`注解** `@CrossOrigin`是Spring提供的一个注解,用于配置控制器或方法,允许特定的跨域请求。当在控制器类或具体方法上添加此...

    解决springboot实现跨域session共享问题

    综上所述,解决Spring Boot中的跨域session共享问题和防止SQL注入,需要结合CORS配置、分布式session存储和安全编程实践。通过合理的配置和编程习惯,我们可以构建更加健壮、安全的Web服务。提供的压缩包文件`...

    解决 springboot跨域请求问题

    在现代Web应用开发中,前后端...总的来说,解决SpringBoot的跨域问题需要理解同源策略和CORS机制,并根据项目规模和需求选择合适的方法。正确配置后,前后端分离的应用就能顺畅地进行数据交互,提供良好的用户体验。

    Springboot跨域CORS处理实现原理

    本文主要介绍了 Springboot 跨域 CORS 处理实现原理,通过示例代码详细讲解了跨域问题产生、解决方案和实现原理,对大家的学习或者工作具有一定的参考学习价值。 一、源(Origin) 在 HTTP 协议中,每个 URL 由三...

    详解springboot设置cors跨域请求的两种方式

    CORS 机制可以解决这个问题,允许 Web 应用程序跨域请求资源。 2. 如何设置 CORS? 可以使用 CorsFilter 或者 CorsConfig 两种方式设置 CORS。使用 CorsFilter 需要 override doFilterInternal 方法,并在该方法中...

    SpringBoot 中实现跨域的5种方式.pdf

    SpringBoot作为一个流行的Java框架,提供了多种处理跨域问题的方案。本文档介绍了在SpringBoot应用中实现跨域资源共享的5种方式,包括使用CorsFilter、重写WebMvcConfigurer、使用注解@CrossOrigin、手动设置响应头...

    SpringMVC CORS跨域测试包

    在现代Web应用程序中,由于前后端分离的设计,跨域问题常常出现,CORS为解决这个问题提供了安全的解决方案。 在SpringMVC框架中,实现CORS功能主要涉及到以下知识点: 1. **CORS原理**:CORS是通过浏览器和服务器...

    SpringBoot第 6 讲:SpringBoot+jersey跨域文件上传

    总结一下,这个"SpringBoot第6讲:SpringBoot+jersey跨域文件上传"教程主要涵盖了以下几个知识点: 1. Spring Boot的基本概念和自动配置。 2. Jersey作为JAX-RS规范的实现,以及如何在Spring Boot中集成Jersey。 3....

    springboot-rest,cors跨域

    由于各个Spring Data模块的初始日期不同,因此大多数模块都带有不同的主要版本号和次要版本号。找到兼容版本的最简单方法是依赖我们随定义的兼容版本提供的Spring Data Release Train BOM。在Maven项目中,您将在...

    springboot整合mybatis,druid,cors跨域,mybatis-plugin脚手架

    标题 "springboot整合mybatis,druid,cors跨域,mybatis-plugin脚手架" 描述了一种在Spring Boot项目中集成MyBatis、Druid数据源、CORS跨域处理以及MyBatis Plugin的方式。这四个技术组件是Java开发中常见的工具和服务...

    SpringBoot 跨域问题的解决方案

    SpringBoot 可以基于 Cors 解决跨域问题,Cors 是一种机制,告诉我们的后台,哪边(origin)来的请求可以访问服务器的数据。全局配置配置实例如下: ```java @Configuration public class CorsConfig implements ...

    provider-coustomer-CORS跨域.zip

    标题 "provider-coustomer-CORS跨域.zip" 暗示了这个压缩包包含的项目是关于在Java环境中,特别是SpringBoot框架下处理CORS(Cross-Origin Resource Sharing,跨源资源共享)的问题。CORS是一种机制,它允许Web应用...

    springboot中如何通过cors协议解决跨域问题

    总结起来,Spring Boot通过CORS支持为开发者提供了灵活的跨域解决方案,既可以设置全局策略,也可以针对特定资源进行精细控制。在实际开发中,可以根据项目的安全需求和资源的敏感程度,选择合适的CORS配置,确保...

Global site tag (gtag.js) - Google Analytics