SpringBoot实现全局和局部跨域的两种方式

 更新时间:2023年01月08日 15:16:03   作者:小花皮猪  
本文主要介绍了SpringBoot实现全局和局部跨域的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

在如今前后端分离的开发模式下,跨域是一个非常经典的问题,解决的方式也有很多,比如代理服务器,使用JSONP

我之前也写过一篇解决跨域问题的文章,感兴趣的可以参考:解决Vue前后端跨域问题的多种方式

上面两种解决跨域的办法都是在前端角度的,这次站在后端角度,从全局和局部两个方面解决跨域问题

什么是跨域

所谓的跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。

解决跨域

后端解决跨域,主要借助cors

局部解决(使用注解)

可以使用注解:@CrossOrigin

该注解开启之后,就可以解决跨域问题,它可以加在controller中,表面这个controller中的全部方法都经过跨域处理,也可以单独加在某个方法上,表示只有这一个方法经过跨域处理

但是它的默认值为*,也就是默认全部放行,理论来说不太安全

如果项目里面又多个controller或者多个方法,使用注解就会显得非常鸡肋,如果一个一个加太麻烦了,这时候就可以使用全局注解了

全局解决

原理:创建一个配置类,开启跨域注册,并使用@Configuration注解把这个类当作一个配置注入到项目中

我们可以自由配置请求方式,以及域名权限,请求时间,更加细度的去控制跨域范围

package com.wyh.config;

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

/**
 * @Description: 解决全局跨域
 * @Author: 魏一鹤
 * @Date: 2022-11-30 22:44
 **/

@Configuration
public class CorsMapping implements WebMvcConfigurer {

    @Override
    /**
     * 重新跨域支持方法
     * CorsRegistry  开启跨域注册
     */
    public void addCorsMappings(CorsRegistry registry) {
        //addMapping 添加可跨域的请求地址
        registry.addMapping("/**")
                //设置跨域 域名权限 规定由某一个指定的域名+端口能访问跨域项目
                .allowedOrigins("*")
                //是否开启cookie跨域
                .allowCredentials(false)
                //规定能够跨域访问的方法类型
                .allowedMethods("GET","POST","DELETE","PUT","OPTIONS")
                //添加验证头信息  token
                //.allowedHeaders()
                //预检请求存活时间 在此期间不再次发送预检请求
                .maxAge(3600);
    }
}

注意:千万不要忘了@Configuration注解,不然配置是无效的!!!

总结

以上就是SpringBoot解决全局和局部跨域问题的两种方式了,根据自己的需求灵活选择即可!更多相关SpringBoot 全局和局部跨域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue组件中传值EventBus的使用及注意事项说明

    vue组件中传值EventBus的使用及注意事项说明

    这篇文章主要介绍了vue组件中传值EventBus的使用及注意事项说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 基于vue2.0实现简单轮播图

    基于vue2.0实现简单轮播图

    这篇文章主要为大家详细介绍了基于vue2.0实现简单轮播图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Vuex的各个模块封装的实现

    Vuex的各个模块封装的实现

    这篇文章主要介绍了Vuex的各个模块封装的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • vue下使用nginx刷新页面404的问题解决

    vue下使用nginx刷新页面404的问题解决

    这篇文章主要介绍了vue下使用nginx刷新页面404的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 精读《Vue3.0 Function API》

    精读《Vue3.0 Function API》

    这篇文章主要介绍了精读《Vue3.0 Function API》,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Vite配置文件如何加载深入剖析

    Vite配置文件如何加载深入剖析

    我们知道,Vite 构建环境分为开发环境和生产环境,不同环境会有不同的构建策略,但不管是哪种环境,Vite 都会首先解析用户配置,那接下来,本文就来与大家分析配置解析过程中 Vite 到底做了什么?即Vite是如何加载配置文件的
    2023-11-11
  • Vue2和Vue3的nextTick实现原理

    Vue2和Vue3的nextTick实现原理

    Vue 中的数据绑定和模板渲染都是异步的,那么如何在更新完成后执行回调函数呢?这就需要用到 Vue 的 nextTick 方法了,本文详细介绍了Vue2和Vue3的nextTick实现原理,感兴趣的同学可以参考一下
    2023-04-04
  • el-form的model、prop属性和表单校验等使用

    el-form的model、prop属性和表单校验等使用

    本文主要介绍了el-form的model、prop属性和表单校验等使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 在Vue 中使用Typescript的示例代码

    在Vue 中使用Typescript的示例代码

    这篇文章主要介绍了在Vue 中使用Typescript的示例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • vue 限制input只能输入正数的操作

    vue 限制input只能输入正数的操作

    这篇文章主要介绍了vue 限制input只能输入正数的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论