springboot解决全局和局部跨域问题的两种方式(代码片段)

小花皮猪 小花皮猪     2023-01-06     650

关键词:

前言

在如今前后端分离的开发模式下,跨域是一个非常经典的问题,解决的方式也有很多,比如代理服务器,使用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+axios+springboot前后端分离项目时会出现跨域问题解决方式:一:全局配置1/**2*就是注册的过程,注册Cors协议的内容。3*如:Cors协议支持哪些请求URL,支持哪些请求类型,请求时处理的超时时长是什么等。4*/5@Override6publicvoidaddC... 查看详情

springboot中通过cors解决跨域问题

同源策略源(origin)就是协议(http)、域名(localhost)和端口号(8080),同源是指协议、域名以及端口要相同。No‘Access-Control-Allow-Origin‘headerispresentontherequestedresource.后端使用CORS(跨域源资源共享)(CORS,Cross-originresourceshari... 查看详情

springsecurity---跨域访问和跨站攻击问题详解(代码片段)

...用代理第三类方案:CORSCORS简述Spring-CORS规则基础配置SpringBoot下实现CORS的四种方式使用CorsFilter进行全局跨域配置重写WebMvcConfigurer的addCorsMappings方法(全局跨域配置)使用CrossOrigin注解(局部跨域配置)使用Http... 查看详情

springboot与vue交互解决跨域问题亲测已解决(代码片段)

...是灰小猿,一个超会写bug的程序猿!最近在利用springboot+vue整合开发一个前后端分离的个人博客网站,所以这一篇总结一下在开发中遇到的一个问题,关于解决在使用vue和springboot在开发前后端分离的项目时࿰... 查看详情

spring,springmv,springboot解决跨域问题

 SpringMvc:<mvc:cors><mvc:mappingpath="/**"allowed-origins="*"allow-credentials="true"max-age="1800"allowed-methods="GET,POST,PUT,DELETE,PATCH,OPTIONS"/></mvc:cors> 在发生全局异常 查看详情

springboot与vue交互解决跨域问题亲测已解决(代码片段)

...是灰小猿,一个超会写bug的程序猿!最近在利用springboot+vue整合开发一个前后端分离的个人博客网站,所以这一篇总结一下在开发中遇到的一个问题,关于解决在使用vue和springboot在开发前后端分离的项目时࿰... 查看详情

springboot——解决跨域问题

关于跨域介绍在前后分离的架构下,跨域问题难免会遇见比如,站点http://domain-a.com的某HTML页面通过的src请求http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。出于安全原因,浏览... 查看详情

解决跨域问题

...跨域,像是一般的href属性,a标签什么的都不拦截。二、解决跨域问题的两种方式JSONPCORS 三、JSONP先简单来说一下JSONP,具体详细详见上面JSONPJSONP是json用来跨域的一个东西。原理是通过script标签的跨域特性来绕过同源策略。... 查看详情

springboot的cros跨域问题经常始终不能解决跨域的原因

SpringBoot的Cros跨域问题经常始终不能解决跨域的原因问题问题的根本原因配置方法SpringBoot2.2.X版本SpringBoot2.5.X版本问题在配置跨域的@Configuration的时候,发现无论是.allowedOrigns()还是.allowedOriginParrtens()都解决不了的时候请看... 查看详情

vue之component

...。仅有的例外是像el这样根实例特有的选项。组件基础:全局组件:可以在任何(根)实例中使用的组件;局部组件:只能在某一实例中使用的组件:一、定义全局组件和局部组件的两种方法:方法一:定义一个全局组件和局部... 查看详情

springboot跨域问题解决方案

@ConfigurationpublicclassCorsConfig{@BeanpublicFilterRegistrationBeancorsFilter(){UrlBasedCorsConfigurationSourcesource=newUrlBasedCorsConfigurationSource();CorsConfigurationconfig=newCorsConfiguratio 查看详情

springboot跨域(代码片段)

...本地创建一个html,里面写一个ajax请求访问我服务器springboot应用提供的接口:192.168.56.123:8080/getUserInfo则会出报No'Access-Control-Allow-Origin'headerispresentontherequestedresource.错误。此类问题我们一般是在接口提供方,即服... 查看详情

springboot的cros跨域问题经常始终不能解决跨域的原因(代码片段)

SpringBoot的Cros跨域问题经常始终不能解决跨域的原因问题问题的根本原因配置方法SpringBoot2.2.X版本SpringBoot2.5.X版本问题在配置跨域的@Configuration的时候,发现无论是.allowedOrigns()还是.allowedOriginParrtens()都解决不了的时候请看... 查看详情

springboot解决跨域问题

跨域问题importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.cors.CorsConfiguration;importorg.springframework.web.cors 查看详情

springboot使用cors解决跨域请求问题

什么是跨域?同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。同源策略是浏览器安全的基石。如果一个请求地址里面的协议、域名和端口号都相同,就属于同源。举个栗子... 查看详情

springboot解决跨域问题

因springboot框架通常用于前后端分离项目,需配置后台允许跨域访问,配置类如下,将该类加入工程中即可。importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.cors.Co 查看详情

springboot打包的两种方式-jar方式和war方式(代码片段)

SpringBoot打包的两种方式-jar方式和war方式首先:配置maven环境变量新建系统变量MAVEN_HOMEE:\\JDK\\mave\\apache-maven-3.8.4在Path写入%MAVEN_HOME%\\binjar方式执行mvninstall命令开始打包生成的文件在target运行打包好的jar包:地址为绝对地址命令... 查看详情

springboot解决跨域问题

项目结构添加WebCorsConfig跨域类,实现WebMvcConfigurer接口,同时加上@Configuration注解完整代码packagecom.mzx.loginlist.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.con 查看详情