首页 > 其他分享 >前后端分离项目,跨域问题

前后端分离项目,跨域问题

时间:2023-10-09 21:14:08浏览次数:27  
标签:WebMvcConfigurerComposite 分离 跨域 前后 WebMvcConfigurer 允许 configurers public

跨域问题

当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问就会遇到跨域问题。
springboot项目默认不允许处理跨域请求,前端报错:has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方法

1.添加注解

在启动类上添加 @CrossOrigin

2.添加WebMvcConfigurer配置类

WebMvcConfigurer是web自动配置类在web启动时自动加载的一个类。

@Configuration(
    proxyBeanMethods = false
)
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
    private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite();

    public DelegatingWebMvcConfiguration() {
    }

    @Autowired(
        required = false
    )
    public void setConfigurers(List<WebMvcConfigurer> configurers) {
        if (!CollectionUtils.isEmpty(configurers)) {
            this.configurers.addWebMvcConfigurers(configurers);
        }
    }

其中WebMvcConfigurerComposite是WebMvcConfigurer的子类,setConfigurers将所有WebMvcConfigurer类加载进ioc,用以配置底层
所以利用WebMvcConfigurer可以将允许跨域逻辑添加到springboot中

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 设置允许跨域的路径
        registry.addMapping("/**")
                // 设置允许跨域请求的域名
                .allowedOriginPatterns("*")
                // 是否允许cookie
                .allowCredentials(true)
                // 设置允许的请求方式
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                // 设置允许的header属性
                .allowedHeaders("*")
                // 跨域允许时间
                .maxAge(3600);
    }
}

标签:WebMvcConfigurerComposite,分离,跨域,前后,WebMvcConfigurer,允许,configurers,public
From: https://www.cnblogs.com/wz-NO1/p/17753139.html

相关文章

  • 阿里云OSS跨域设置教程
    登录上阿里云官方点击跳转,在控制台左侧栏搜索:【CDN】,点击进入【CDN】功能管理界面在【域名管理】处,点击添加域名  加速域名填写一个二级域名,不要使用主域名;源站信息选择【远程附件存储】用的相关bucket桶的名称 域名创建好后,需要在域名解析处,添加一个CNAME解析使之生......
  • Sharding-JDBC教程:Spring Boot整合Sharding-JDBC实现分库分表+读写分离
    在工程的application中做sharding-jdbc的分库分表配置,代码如下:sharding.jdbc.datasource.names=ds-master-0,ds-master-1,ds-master-0-slave-0,ds-master-0-slave-1,ds-master-1-slave-0,ds-master-1-slave-1sharding.jdbc.datasource.ds-master-0.type=com.alibaba.dr......
  • springboot -- 整合 sharding-jdbc 读写分离+分库分表配置(进阶)
    sharding-jdbc说明:1、分库分表不能中途更改,取模算法的id会出错2、不支持特殊sql,包括去重,子sql,聚合等3、查询会给所有表发查询sql,带上分库,分表的字段的查询只发一条,4、查询数据要注意使用,尽量带上分库或分表字段来查询,避免多表查询sql过多取模算法假设2个表,test_0,test_1,分......
  • 零基础尝试mybatis-plus读写分离
     看了好几篇博友写的文章,关于spring-boot整合mybatis-plus实现读写分离,不过都是缺这少那的,跑不起来,所以自己实操了一次,做个记录 实现方式为使用Aop切面1、增加数据库枚举类/***数据库类型*/publicenumDBTypeEnum{/***主节点*/MASTER,......
  • 跨域问题?如何解决?
    前言在当今互联网时代,前端开发中经常会遇到跨域问题,即浏览器禁止向不同源的服务器发送请求。这意味着在开发过程中,如果我们的前端代码需要与其他域名下的接口进行通信,我们将面临无法直接发送请求的困境。跨域问题的存在给开发带来了不少麻烦,然而,在跨域问题之下,我们也发现了解决的......
  • SpringSecurity-前后端分离教程
    1、简介SpringSecurity是Spring家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。一般来说中大型的项目都是使用SpringSecurity来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。......
  • 传统的MVC开发模式和前后端分离开发模式
    1.引言在当今互联网时代,移动应用和网页应用的发展极大地推动了前后端分离开发模式的兴起。传统的后端渲染方式已经不能满足用户对高性能和优质用户体验的需求,于是前后端分离逐渐成为了一种主流的开发模式。前后端分离开发模式通过将前端和后端的开发分离,极大地提高了开发效率和......
  • 前后端以数据url的方式传递字节流
    正常情况下通过字节流,将本地的一张图片渲染到前端(vue2):后端:StringimagePath="图片路径";byte[]imageBytes=Files.readAllBytes(Paths.get(imagePath));//获取文件字节Stringbase64Image=Base64.getEncoder().encodeToString(imageBytes);//把这些图片......
  • 什么是软件设计领域里,前后端模块的 interoperability?
    在软件设计领域,前后端模块的interoperability(互操作性)是指不同部分或组件之间能够有效地协同工作,以实现系统的整体功能。这种互操作性在全栈开发中尤为重要,因为现代应用程序通常由前端(Frontend)和后端(Backend)两个主要部分组成,它们必须能够无缝协作以提供用户所需的功能和体验。前......
  • 关于在springboot中开发mybatis来实现前后端分离
    一、分层架构Controller:负责处理用户的请求和响应get请求与post请求的区别:get请求需要的在http协议上输入参数,而post请求不需要在http协议上输入参数,要在请求体中寻找参数。 在一次请求与响应过程中,首先浏览器发起一次请求到服务器,服务器中会有一个前端控制器处理请求,处理......