首页 > 其他分享 >Spring Boot 跨域访问

Spring Boot 跨域访问

时间:2023-10-12 16:25:37浏览次数:34  
标签:跨域 Spring Boot springframework servlet 访问 CorsRegistry config

image

出于安全的考虑,浏览器会禁止 Ajax 访问不同域的地址,在现如今微服务横行的年代,跨域访问是非常常见的。W3C 的 CORS (Cross-origin-resource-sharing) 规范中也已经允许跨域访问, 并被主流浏览器所支持,它们包括:

  • Chrome 3+;
  • Firefox 3.5+;
  • Opera 12+;
  • Safari 4+;
  • IE 8+;

如何在 Spring Boot 中配置跨域访问呢?

Spring Boot 提供了对 CORS 的支持,您可以实现 addCorsMappings 接口来添加规则来允许跨域访问:

package site.exception.config;

import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
* @time 下午8:36
* @discription
**/
public class CORSConfig extends WebMvcConfigurerAdapter {

@Override
public void addCorsMappings(CorsRegistry registry) {
// 允许所有跨域访问
registry.addMapping("/**");
}

}

/** 允许所有域名都能够跨域访问,下面看看更为精细的控制:

package site.exception.config;

import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
* @time 下午8:36
* @discription
**/
public class CORSConfig extends WebMvcConfigurerAdapter {

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://www.baidu.com")
.allowedMethods("POST", "GET");
}

}

通过上面的配置,只允许来自 www.exception.site 的跨域访问,并且限定只能对 /api 下的所有接口进行跨域访问,同时只能访问 POSTGET 方法。

跨域访问的原理

跨域访问的原理其实很简单,当发起跨域请求的时候,浏览器会对请求域返回的 HTTP 头进行检查,如果 Access-Control-Allow-Origin 包含了自身域,则表示允许访问,否者报错。这也正是上述代码中 allowedOrigins() 方法的作用。

标签:跨域,Spring,Boot,springframework,servlet,访问,CorsRegistry,config
From: https://www.cnblogs.com/shenMaQN/p/17759771.html

相关文章

  • 解决 springboot 2.6.6 版本中内嵌 tomcat 9.0.60 版本 严格执行RFC 3986规范,导致在 G
    项目中get请求:http://domain:port/api/module/function/getList?pageNum=1&pageSize=1000&keyWord=[]&id=;keyWord的参数应该是 keyWord="[]",如果不加双引号,keyWord就变成了数组,后台接口就报错了。调查原因:springboot2.6.6版本中内嵌tomcat9.0.60版本严格执行RFC3986规范......
  • Spring @AliasFor 用法
    1.Spring@AliasFor用法参考资料:https://blog.csdn.net/ab411919134/article/details/81782269AuthauthMeta=AnnotatedElementUtils.findMergedAnnotation(handler2.getMethod(),Auth.class);......
  • SpringBootCMS漏洞复现分析
    SpringBootCMS,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码,让您轻松打造自己的独立网站,同时也方便二次开发,让您快速搭建个性化独立网站,为您节约更多时间。http://www.jrecms.com环境搭建修改src/main/......
  • 什么是跨域?如何解决跨域?
    跨域,是因为浏览器中存在同源策略。同源策略是指:当请求的协议、域名、和端口三者有任何一个不同时,浏览器会自动阻止请求,产生了跨域。目的是防止加载恶意资源。解决方案:总:知道六种,常用两种。分:1.CORS(跨域资源共享):直接让后台开放跨域,前端不需要任何操作。(常用)2.服务器反向代理......
  • Spring Boot + EasyExcel 导入导出,好用到爆,可以扔掉 POI 了
    1、EasyExcelEasyExcel是阿里巴巴开源poi插件之一,主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错。主要解决方式:通过解压文件的方式加载,一行一行的加载,并且抛弃样式字体等不重要的数据,降低内存的占用。EasyExcel优势注解式自定义操作......
  • Spring Boot 监听 Redis Key 失效事件实现定时任务
    1、业务场景我们以订单功能为例说明下:生成订单后一段时间不支付订单会自动关闭。最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率。还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作。......
  • Spring Boot 2.6.0 发布,一大波新特性,禁止了循环依赖,还有哪些更新
    1、默认禁止了循环依赖循环依赖大家都知道,也被折磨过,这下2.6.0的版本默认禁止了循环依赖,如果程序中出现循环依赖就会报错。当然并没有一锤子打死,也提供了开启允许循环依赖的配置,只需要在配置文件中开启即可:spring:main:allow-circular-references:true2、支持自定义脱敏规......
  • SpringBoot + SpringBatch + Quartz整合定时批量任务
    1、引言最近一周,被借调到其他部门,赶一个紧急需求,需求内容如下:PC网页触发一条设备升级记录(下图),后台要定时批量设备更新。这里定时要用到Quartz,批量数据处理要用到SpringBatch,二者结合,可以完成该需求。由于之前,没有用过SpringBatch,于是上网查了下资料,发现可参考的不是很多,于是只能去......
  • 忽视日志吃大亏,手把手教你玩转 SpringBoot 日志
    一、日志重要吗程序中的日志重要吗?在回答这个问题前,笔者先说个事例:❝笔者印象尤深的就是去年某个同事,收到了客户反馈的紧急bug。尽管申请到了日志文件,但因为很多关键步骤没有打印日志,导致排查进度很慢,数个小时都没能排查到问题,也无法给出解决对策。导致了客户程序一直阻断,最......
  • 【Spring】BeanPostProcessor后置处理器
    BeanPostProcessor后置处理器可以在Bean初始化前后做一些事情,注意这里是bean的初始化,不是实例化,BeanPostProcessor是一个接口,里面提供了两个方法,分别为postProcessBeforeInitialization(初始化之前)和postProcessAfterInitialization(初始化之后),在方法入参中有两个参数,一个bean对象,一......