Spring Boot 2中对于CORS跨域访问的快速支持
原文:https://www.jianshu.com/p/840b4f83c3b5
目前的程序开发,大部分都采用前后台分离。这样一来,就都会碰到跨域资源共享CORS的问题。Spring Boot 2 对此提供了很好的解决方法。
更多CORS介绍,请看这里: CORS介绍
1、注解实现
在Spring Boot 2中,提供了注解的方式来对CORS跨域访问进行支持。
1.1 在方法上注解
可以将@CrossOrigin注解在方法上。这样该方法可以被跨域访问。

1.2 在Controller上注解
也可以对整个Controller上注解。这样整个Controller下的所有方法都支持跨域访问。

1.3 同时注解
二者同时注解也可以,此时取的是二者的组合。
如下所示,Controller可以被所有来源访问,但/user只能被http://localhost:9000访问。

1.4 注解细项配置
默认情况下,@CrossOrigin允许所有的来源,所有的Header,@RequestMapping注解中指定的HTTP方法被跨域访问,并支持最大30分钟的maxAge。 您可以覆盖这些注解属性值,以进行个性化设置:
| 属性 | 说明 |
|---|---|
| origins | 允许的来源列表。响应信息会放在HTTP协议Header的Access-Control-Allow-Origin中 -*- 所有的来源都被允许 --- 如果未定义,则允许所有来源) |
| allowedHeaders | 实际请求期间可以使用的请求头列表。该值用于预检的响应Header中的Access-Control-Allow-Headers信息。 -*- 意味着允许客户端请求的所有头信息。 --- 如果未定义,则允许所有请求的headers。 |
| methods | 服务器端支持的HTTP请求方法列表。 -*- 所有方法。 --- 如果未定义,则使用由RequestMapping注解定义的方法。 |
| exposedHeaders | 浏览器允许客户端访问的响应头列表。 在实际响应报头Access-Control-Expose-Headers中设置值。 –-- 如果未定义,则使用空的暴露标题列表。 |
| allowCredentials | 它确定浏览器是否应该包含与请求相关的任何cookie。 -false- 不允许包含Cookies 。 –true– 允许携带Cookies。 –""- (空字符串) 意味着未定义。 –-- 如果未定义,则允许所有凭据。 |
| maxAge | 预响应缓存持续时间的最大时间(以秒为单位)。 该值在Header的Access-Control-Max-Age中设置。 –-- 如果未定义, 最大时间设置为1800秒(30分钟) |
2、全局配置
在Spring Boot 2中,通过复写WebMvcConfigurer中的addCorsMapping方法,可以达到全局配置的目标。
@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry corsRegistry) {
// 允许跨域访问资源定义: /api/ 所有资源
corsRegistry.addMapping("/api/**")
// 只允许本地的9000端口访问
.allowedOrigins("http://localhost:9000", "http://127.0.0.1:9000")
// 允许发送Cookie
.allowCredentials(true)
// 允许所有方法
.allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD");
}
}
作者:Jackeroo
链接:https://www.jianshu.com/p/840b4f83c3b5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Spring Boot 2中对于CORS跨域访问的快速支持的更多相关文章
- spring boot / cloud (六) 开启CORS跨域访问
spring boot / cloud (六) 开启CORS跨域访问 前言 什么是CORS? Cross-origin resource sharing(跨域资源共享),是一个W3C标准,它允许你向一 ...
- Spring Boot Web应用开发 CORS 跨域请求支持:
Spring Boot Web应用开发 CORS 跨域请求支持: 一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等CORS与JSONP相比 1. JSONP只能实现 ...
- Spring Boot Web应用开发 CORS 跨域请求支持
一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等 CORS与JSONP相比 1. JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求. 2. 使用C ...
- 九、Spring Boot 优雅的实现CORS跨域
前言 我们的springboot 架手架已经包含了mysql,redis,定时任务,邮件服务,短信服务,文件上传下载,以及docker-compose 构建镜像等等. 接下来让我们解决另一个常见的问题 ...
- Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问
WebApi中启用CORS跨域访问 1.安装 Nugget包Microsoft.AspNet.WebApi.Cors This package contains the components to e ...
- 如何在ASP.NET Core中实现CORS跨域
注:下载本文的完整代码示例请访问 > How to enable CORS(Cross-origin resource sharing) in ASP.NET Core 如何在ASP.NET C ...
- Asp.Net WebApi 启用CORS跨域访问指定多个域名
1.后台action指定 EnableCors指定可访问的域名多个,使用逗号隔开 //支持客户端凭据提交,指定多个域名,使用逗号隔开 [EnableCors("http://localhos ...
- Springboot CORS跨域访问
Springboot CORS跨域访问 什么是跨域 浏览器的同源策略限制: 它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础 ...
- 在ASP.NET MVC3 中利用Jsonp跨域访问
在ASP.NET MVC3 中利用Jsonp跨域访问 在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复 ...
随机推荐
- 安装Python3.6.4后,在使用numpy时报错RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
原因: 因为安装numpy用的是 pip来安装的 pypi官方对于numpy的库已经升级了,但是升级后的版本与其他的库不匹配 所以报错 解决: 先把已经安装的numpy卸载: pip uninstal ...
- VS2017插件开发-项目右键菜单
1.创建自定义命令 2.更改.vsct中Group节点的id <Group guid="guidPublishOwinPackageCmdSet1" id="MyM ...
- Java 基本语法---Java运算符
Java 基本语法---Java运算符 0. 概述 Java中的运算符主要分为以下几种: 算术运算符 赋值运算符 关系运算符 逻辑运算符 条件运算符 位运算符 其他运算符 1. 算术运算符 操作符 描 ...
- Network Principle Course Summary 001
1.物理层 物理层 协议:RJ45.CLOCK.IEEE802.3 (中继器,集线器) 作用:通过媒介传输比特,确定机械及电气规范(比特Bit) 1.1 通信基础 数据 (data) —— 运送消息的 ...
- apollo配置相关
一.运维 1. 数据库ConfigDB,PortalDB 2. 基础服务 :Config-Service,(Meta-Server),Admin-Service,Portal 3. 应用在SIT.UA ...
- 批量初始化数组和memset函数
对于数组的初始化有一下三种方式: int a[]={1,2,3,4,5} //通过判断初始化值得个数来却仍数组长度 int b[5]={1,2,3} //数组长度为5,可是初始值却只有三个,因此,不 ...
- python标准模块(下)
Python 系统标准模块(shutil.logging.shelve.configparser.subprocess.xml.yaml.自定义模块) 目录: shutil logging模块 she ...
- HttpClient-----待补充
1.简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java.net 包中 ...
- ubuntu下spark安装配置
一.安装vmware虚拟机 二.在虚拟机上安装ubuntu12.04操作系统 三.安装jdk1.8.0_25 http://www.oracle.com/technetwork/java/javase ...
- Wireshark网络分析就这么简单
tcpdump抓包命令: root#tcpdump -I eth0 -s 80 -w /tmp/tcpdump.cap 注:其中80表示,只抓每个包的前80个字节. 抓包时就筛选自己需要的包: Wir ...