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

Spring Boot 跨域访问

时间:2023-11-17 15:00:50浏览次数:36  
标签:跨域 Spring Boot springframework servlet 访问 CorsRegistry config

Spring Boot 跨域访问_ide

出于安全的考虑,浏览器会禁止 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 的跨域访问,并且限定只能对 /api 下的所有接口进行跨域访问,同时只能访问 POSTGET 方法。

跨域访问的原理

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



作者:深码青年

标签:跨域,Spring,Boot,springframework,servlet,访问,CorsRegistry,config
From: https://blog.51cto.com/u_16282813/8447819

相关文章

  • SpringBoot使用@Value获取不到值的问题
    背景在一次SpringBoot项目改造为Cloud的过程中,使用Nacos作为配置中心获取属性,改造后程序启动报错,查看日志,定位到代码:解决方案如果了解Bean的生命周期的同学应该知道,Spring在创建Bean的时候,会使用无参构造函数去初始化一个Bean,@Value这个阶段是属于依赖注入,是在初始化之后的,所......
  • 02_自定义Springboot starter
     创建springbootstarter 创建一个demostarter  创建配置类@Configuration@EnableConfigurationProperties(EmailProperties.class)@ConditionalOnBean(EmailEnable.class)publicclassEmailAutoConfiguration{static{System.out.println("Em......
  • Spring中@Autowired和@Resource的区别
    说明注解提供方:@Autowired这个由Spring提供;@Resource由JDK提供区别①注解内参数不同@Autowired只包含一个required参数,默认为true,表示注入的时候,该bean必须存在,否则就会注入失败;required=false,表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错@Resource包含七个参数,其中最......
  • spring boot
           ......
  • Spring5学习随笔-生命周期、自定义类型转换器、后置处理Bean
    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】第十章、对象的生命周期1.什么是对象的生命周期指的是一个对象创建、存活、消亡的一个完整过程2.为什么要学习对象的生命周期由Spring负责对象的......
  • 「Java开发指南」如何在Spring中使用JAX-WS注释器?
    本文将指导您如何使用JAX-WS注释器从Spring服务生成JAX-WSWeb服务,在本教程中,您将学习如何:为Spring服务启用JAX-WS部署应用程序并测试服务所有与Springscaffolding相关的任务都需要MyEclipseSpring或Bling授权。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:7423369......
  • org.springframework.boot.loader.jar.jarfile memory leak
       org.springframework.boot.loader.jar.jarfilememoryleak这个问题可能是因为SpringBoot应用在运行时会将jar包解压到临时文件夹中,然后从这些解压的文件中加载类。如果您在应用运行时反复加载不同的jar包,就可能导致内存泄漏的问题。解决这个问题的方法是在应用......
  • go语言解决跨域的问题图片显示问题
    来源:http://www.shanhubei.com/archives/2838.html直接上代码packagemainimport("fmt""io/ioutil""net/http")//获取C的图片数据funcReadImgData(urlstring)[]byte{resp,err:=http.Get(url)iferr!=nil{......
  • springboot整合前端实现断点续传、大文件秒传以及多线程上传下载
    前端,百度开源框架webuploader新建upload.htmlwebuploader官网地址:http://fex.baidu.com/webuploader/<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>webuploader</title></head><!--引......
  • springboot 集成dubbo 关键配置:
    1.pom<!--dubbo与zk的组件start--><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.1.0</version></dependency><dependency>......