首页 > 其他分享 >Springboot解锁部分跨域安全机制

Springboot解锁部分跨域安全机制

时间:2022-12-28 21:11:39浏览次数:39  
标签:请求 corsConfiguration 解锁 跨域 new public corsFilterFilterRegistrationBean Springboo

目录

跨域

定义

跨域是指在域名,端口,协议,三种任意一种不同,都会算作不同域,当想要访问的时候不同域,或者不同域之间请求资源,即是跨域。

为什么出现跨域

现在前后端分离的系统越来越多,前端和后端的端口不一致,前端想要访问测试环境中的后端服务等等,就会触发跨域。

流程

跨域是前端可以发送请求,后端也可以返回结果,但是浏览器拦截了返回结果,前端会显示CORS错误。
前端发送请求->服务端解析请求->服务端返回结果->浏览器拦截

解决方法

方法一

我是用的已解决办法是在Controller层中加入注解@CrossOrigin

@Controller
@CrossOrigin
public class AlarmRecordController {

}

注解CrossOrigin采用的是局部解锁跨域。也就是说在controller类或者是controller的方法上加入均可以。

未解决办法

以下几种方法,本人均使用,但是未成功。

全局配置

过滤器


/**过滤器
*/
@Configuration
public class GlobalCorsConfig {

    @Bean
    public FilterRegistrationBean<CorsFilter> corsFilter() {
        FilterRegistrationBean<CorsFilter> corsFilterFilterRegistrationBean = new FilterRegistrationBean<>();
        //添加CORS配置信息
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        //允许的域,不要写*,否则cookie就无法使用了
        corsConfiguration.addAllowedOrigin("*");
        //允许的头信息
        corsConfiguration.addAllowedHeader("*");
        //允许的请求方式
        corsConfiguration.setAllowedMethods(Arrays.asList("POST", "PUT", "GET", "OPTIONS", "DELETE"));
        //是否发送cookie信息
        corsConfiguration.setAllowCredentials(true);
        //预检请求的有效期,单位为秒
        corsConfiguration.setMaxAge(3600L);

        //添加映射路径,标识待拦截的请求
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", corsConfiguration);

        corsFilterFilterRegistrationBean.setFilter(new CorsFilter(source));
        corsFilterFilterRegistrationBean.setOrder(-1);
        return corsFilterFilterRegistrationBean;
    }

}

拦截器


@Configuration
public class MyConfiguration implements WebMvcConfigurer {

	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**")
			.allowedOrigins("*")
			.allowCredentials(true)
			.allowedMethods("GET","POST","OPTIONS","DELETE", "PATCH",)
			.maxAge(3600*24);
	}
}


使用环境

Springboot 2.7.0版本,以上一种方法,和本人版本不一致的可以尝试。

标签:请求,corsConfiguration,解锁,跨域,new,public,corsFilterFilterRegistrationBean,Springboo
From: https://www.cnblogs.com/LuoXia-youyu/p/17011288.html

相关文章

  • springboot学习笔记整理
    springboot学习笔记整理目录​​1.1、SpringBoot简介​​​​1.2、系统要求:​​​​二、快速入门​​​​2.1、创建一个Maven工程​​​​2.2、pom文件引入依赖​​​​2.3......
  • SpringBoot系列之数据库初始化-datasource配置方式
    【DB系列】数据库初始化-datasource配置方式|一灰灰Blog在我们的日常业务开发过程中,如果有db的相关操作,通常我们是直接建立好对应的库表结构,并初始化对应的数据,即更......
  • springboot整合Jackson
    springboot整合JacksonJackson简介Jackson是一套适合java的数据处理工具,用于JSON格式数据的解析与生成,支持多种类型,是SpringMVC内置解析器。除了Jackson,常用的JSON解......
  • SpringBoot高级篇搜索之Solr环境搭建与简单测试
    搜索可以说是非常常见的场景了,一般选择比较多的有solr和es,底层都是基于Lucene搜索引擎实现。之前简单的使用过solr,一直没有成体系的学习过,正好需要给一个内部项目封装统一的......
  • 跨域资源共享 CORS 详解
    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-originresourcesharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。本文详细......
  • SpringBoot MultipartFile 上传文件null
    开发环境Springboot1.5.2使用方法,一开始直获取文件为null,不加required=false接口无法访问@PostMapping("/import")publicvoidimportTest(@RequestParam(v......
  • tomcat7运行springboot war包项目启动报错
    报错的log如下:2022-12-2801:11:22.701WARN39756---[localhost-startStop-1]ConfigServletWebServerApplicationContext:Exceptionencounteredduringcontext......
  • Egg(二)关闭csrf开启跨域
    1.安装插件npmiegg-cors--save2.开启插件配置路径:{app_root}/config/plugin.jscors:{enable:true,package:'egg-cors',},3.关闭csrf并开启跨域......
  • 免费报名通道限时开启!解锁QCon「AI 时代下的融合通信技术」专场
    万物之始,大道至简,衍化至繁。千年前的中国文明贯穿古今,也依旧在照鉴未来。从1902年的肯塔基无线电话装置到1946年第一架计算机的诞生再到如今高速发展的互联网, 横亘不变......
  • 基于springboot+mybatis+mysql+html实现校园宿舍管理系统
    @目录一、系统简介二、系统主要功能界面三、其它系统四、源码下载一、系统简介本系统功能模块主要分为:信息浏览浏览功能、宿舍打卡浏览功能、学生提交信息功能、宿舍搜索......