springSecurity跨域CORS处理

2023-11-13

续言

之前 知识追寻者写过关于springboot 的跨域处理,并且介绍了跨域相关的概念;具体的可以查看这篇知识追寻者springboot教程系列文章

https://zszxz.com/category/springboot/article/16

关于跨域处理其实挺奇怪,spring, springboot, springSecurity 他们的跨域处理方式都不同!

spring的跨域处理

关于spring的跨域处理可以直接在类或者方法上使用 @CrossOrigin 达到目的;但这只能进行局部处理,如果需要全局处理则需要按如下方式进行配置

 
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
 
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
 
        registry.addMapping("/api/**")
            .allowedOrigins("https://zszxz.com")
            .allowedMethods("GET","POST","PUT", "DELETE")
            .allowedHeaders("header1", "header2", "header3")
            .exposedHeaders("header1", "header2")
            .allowCredentials(true).maxAge(3600);
 
        // ...
    }
}

springboot 跨域处理

在springboot 中 一般情况下可以使用 springMvc的跨域方式配置,但是有时关于系统配置jdk等问题,会造成跨域失效,则需要按如下方式进行配置

@Configuration
public class WebConfig  {

    @Bean
    public CorsFilter corsFilter() {
        //1. 添加 CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //放行哪些原始域
        config.addAllowedOrigin("https://zszxz.com");
        //是否发送 Cookie
        config.setAllowCredentials(true);
        //放行哪些请求方式
        config.addAllowedMethod("*");
        //放行哪些原始请求头部信息
        config.addAllowedHeader("*");
        //暴露哪些头部信息
        //config.addExposedHeader("*");
        //2. 添加映射路径
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**",config);
        //3. 返回新的CorsFilter
        return new CorsFilter(corsConfigurationSource);
    }

}

springSecurity跨域处理

在springSecurity中 配置方式和springboot 的配置区别方式不一样 ,则需要按如下方式进行配置。

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            // by default uses a Bean by the name of corsConfigurationSource
            .cors().and()
            ...
    }

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("https://zszxz.com"));
        configuration.setAllowedMethods(Arrays.asList("GET","POST"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

官方示例中,以下这种配置,知识追寻者试过,没生效

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            // if Spring MVC is on classpath and no CorsConfigurationSource is provided,
            // Spring Security will use CORS configuration provided to Spring MVC
            .cors().and()
            ...
    }
}

网上 说需要将 X-Frame-Options 头禁用调即可,当然我使用第一种方式就可以了,此方式不再尝试, 有兴趣的读者可以进行验证!

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 开启允许iframe 嵌套
        http.headers().frameOptions().disable();

        http.csrf().disable()
            // 开启跨域
            .cors().and()

            .....
    }

}

本套教程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springSecurity跨域CORS处理 的相关文章

随机推荐

  • 驱动开发 作业 day7 9/18

    基于GPIO子系统实现led灯点亮 head h ifndef HEAD H define HEAD H 构建LED开关的功能码 不添加ioctl第三个参数 define LED ON IO l 1 define LED OFF IO l
  • 动态规划之二维费用的背包模型

    前置知识 01背包问题 动态规划之01背包模型 如何何何的博客 CSDN博客 完全背包问题 动态规划之完全背包模型 如何何何的博客 CSDN博客 多重背包问题 动态规划之多重背包模型 如何何何的博客 CSDN博客 二维费用背包问题 二维费用
  • selenium页面切换操作

    selenuim页面切换 webdriver只能在一个页面里对元素进行识别和定位 如果有多个页面操作的时候 要先进行页面切换 切换分两种 1 iframe内嵌页面切换 框架集切换 1 获取iframe标签 iframe driver fin
  • Android12窗口模糊(一)在Activity和Dialog中实现高斯模糊效果

    前言 在 Android 12 中 提供了一些用于实现窗口模糊处理效果 例如背景模糊处理和模糊处理后方屏幕 的公共 API 窗口模糊处理或跨窗口模糊处理用于模糊处理给定窗口后方的屏幕 有两种窗口模糊处理方式 可用于实现不同的视觉效果 背景模
  • 华为OD机试备考攻略 以及题库目录分值说明 考点说明

    华为题库说明 2022与2023题库的区别 华为OD机试的题库是季度更新的 Q1 Q2 Q3 Q4 笔者专栏的题库分为2023和2022 2023的题库是包括2022 11 Q4第四季度 之后以及2023年的题库 2022的题库是包括202
  • 第九届蓝桥杯C/C++ 大学B组省赛编程题题目及答案解析

    目录 试题F 递增三元组 试题G 螺旋折线 试题H 日志统计 试题I 全球变暖 试题J 乘积最大 试题F 递增三元组 问题描述 输入格式 输出格式 样例输入 样例输出 27 代码解析 暴力 三重循环计算所有满足ai lt bj lt ck的
  • R语言之方差分析篇

    当包含的因子是解释变量时 通常会从预测转向 级别差异的分析 即称作方差分析 ANOVA 组间因子 因变量 自变量 均衡设计 balanced design 组内因子 单因素组间方差分析 单因素组内方差分析 重复测量方差分析 主效应 交叉效应
  • JVM Mutex Monitor::lock

    void Monitor lock Thread Self ifdef CHECK UNHANDLED OOPS Clear unhandled oops so we get a crash right away Only clear fo
  • Windows 下PBC库的安装和配置

    背景 PBC库是一个基于双线性对的密码学库 这库在公钥密码学中使用非常广泛 这个库在Linux下的安装非常的简单 有些只会纸上谈兵的人需要在WIN下做 呵呵 但是没办法 需求到了 硬着头皮也要写完 对于一些只会谈兵的人 呵呵 现在主要介绍下
  • jar反编译的.java文件如何可以编辑_修改及反编译可运行Jar包实现过程详解

    将可运行Jar包 反编译成项目 修改代码 再次编译 打包 需要工具 jd gui myeclipse 具体步骤 1 使用jd gui打开原始的Jar包 选择File gt Save All Sources 会生成一个zip压缩包 2 解压这
  • 元素垂直居中的几种方式

    第一种 div div div div boxOne width 200px height 200px background pink display flex justify content center align items cent
  • ps -aux

    查看某个程序的进程号并删除 1 ps aux grep 进程 2 kill 9 进程号 删除该进程
  • visual studio使用教程

    linux疑难问题排查实战 分享了作为公司专家 在项目开发过程中内存优化 堆 栈 代码段 数据段 性能优化 死机 栈越界 堆越界 死锁等疑难问题排查的案例 使用的工具 perf asan strace memleak等 工作经验 大家可以点
  • blender界面基础认识

    blender界面基础认识 自定义功能 Edit gt Preference 界面 主题 视图 灯光 编辑 动画 插件 输入 视图切换 键位映射 系统 保存 加载 文件路径 Blender界面分为以下三个部分 上侧的顶栏 中间的工作区 底部
  • Sklearn专题二 随机森林

    专题二 随机森林 概述 1 集成算法 1 集成算法考虑多个评估器的结果 汇总获取更好的分类 回归表现 2 三种集成算法 装袋法bagging 模型独立 提升法boosting 模型相关 stacking 3 随机森林是一种bagging集成
  • .NET平台常用的开发组件

    工欲善其事 必先利其器 其优雅的编程风格 高效率的开发速度 极度简单的可扩展性 足够强大开发类库 较小的学习曲线 让我对这个平台产生了浓厚的兴趣 在工作和学习中也积累了一些开源的组件 虽然跟Java比Net还是要少 但也足够使用了 其中有一
  • 【C#实现文字转语音功能】

    本文实例为大家分享了C 实现文字转语音的具体代码 供大家参考 具体内容如下 客户提出要求 将文字内容转为语音 因为内网环境 没办法采用联网 在线这种方式 灵机一动 能否写一个简单的例子呢 搜索相关资料还真行 话不多说 有图有真相 关键是 c
  • 网传Spring爆出更大漏洞?别再炒作了…

    之前刚刚过去的log4j2漏洞还历历在目 这次来了个更大的 云舒老大在29日发微博称 出了个超级大漏洞 有吃瓜群众就问 这个瓜有 log4j2 那么好吃吗 云舒大佬的回复是 更大 之后 又有安全大佬sunwear给了一些更细节的信息 所以漏
  • java中类可以包含哪些元素,Java类中包含的元素及作用

    Java类是面试中常考的知识点 是组成Java应用的基本成分 小型和大型的应用都是由类组建而成的 作为合格的Java工程师 一定要清晰了解Java类及其包含的元素及作用 今天学码思Java培训老师就Java类中包含的元素及作用做一个大致讲解
  • springSecurity跨域CORS处理

    续言 之前 知识追寻者写过关于springboot 的跨域处理 并且介绍了跨域相关的概念 具体的可以查看这篇知识追寻者springboot教程系列文章 https zszxz com category springboot article