原文: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下的所有方法都支持跨域访问。

 
在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跨域访问的快速支持的更多相关文章

  1. spring boot / cloud (六) 开启CORS跨域访问

    spring boot / cloud (六) 开启CORS跨域访问 前言 什么是CORS? Cross-origin resource sharing(跨域资源共享),是一个W3C标准,它允许你向一 ...

  2. Spring Boot Web应用开发 CORS 跨域请求支持:

    Spring Boot Web应用开发 CORS 跨域请求支持: 一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等CORS与JSONP相比 1. JSONP只能实现 ...

  3. Spring Boot Web应用开发 CORS 跨域请求支持

    一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等 CORS与JSONP相比 1. JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求. 2. 使用C ...

  4. 九、Spring Boot 优雅的实现CORS跨域

    前言 我们的springboot 架手架已经包含了mysql,redis,定时任务,邮件服务,短信服务,文件上传下载,以及docker-compose 构建镜像等等. 接下来让我们解决另一个常见的问题 ...

  5. Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问

    WebApi中启用CORS跨域访问 1.安装 Nugget包Microsoft.AspNet.WebApi.Cors This package contains the components to e ...

  6. 如何在ASP.NET Core中实现CORS跨域

    注:下载本文的完整代码示例请访问 > How to enable CORS(Cross-origin resource sharing) in ASP.NET Core 如何在ASP.NET C ...

  7. Asp.Net WebApi 启用CORS跨域访问指定多个域名

    1.后台action指定 EnableCors指定可访问的域名多个,使用逗号隔开 //支持客户端凭据提交,指定多个域名,使用逗号隔开 [EnableCors("http://localhos ...

  8. Springboot CORS跨域访问

    Springboot CORS跨域访问 什么是跨域 浏览器的同源策略限制: 它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础 ...

  9. 在ASP.NET MVC3 中利用Jsonp跨域访问

    在ASP.NET MVC3 中利用Jsonp跨域访问 在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复 ...

随机推荐

  1. 一个无锁消息队列引发的血案(五)——RingQueue(中) 休眠的艺术

    目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...

  2. Uploadify3.2中文提示

    版本:Uploadify Version 3.2官网:http://www.uploadify.com Uploadify是一款基于Jquery的上传插件,用起来很方便.但上传过程中的提示语言为英文, ...

  3. WCF客户端调用服务器端错误:"服务器已拒绝客户端凭据"。

    WCF客户端和服务器端不在同一台机器上时,客户端调用服务器端会报如下错误:"服务器已拒绝客户端凭据". 解决办法:在服务端配置文件与客户端配置文件中加入下面红色部分

  4. ASP.NET MVC 路由学习

    参考 http://www.cnblogs.com/yaozhenfa/p/asp_net_mvc_route_2.html 说明 1."解决与物理路径的冲突"这段教程这里如果不起 ...

  5. python抓取内涵段子文章

    # coding:utf-8 from urllib.request import urlretrieve import threading import requests from bs4 impo ...

  6. [转] 实时监听input输入的变化(兼容主流浏览器)

    遇到如此需求,首先想到的是change事件,但用过change的都知道只有在input失去焦点时才会触发,并不能满足实时监测的需求,比如监测用户输入字符数. 在经过查阅一番资料后,欣慰的发现firef ...

  7. Java第三阶段学习(六、多线程)

    一.进程和线程的区别: 进程:指正在运行的程序,当一个程序进入内存运行,就变成一个进程. 线程:线程是进程的一个执行单元. 总结:一个程序运行后至少会有一个进程,一个进程可以有多个线程. 多线程:多线 ...

  8. Qt QByteArray或者Char转十六进制 QString

    1.QByteArray转十六进制 QByteArray buff = sp->readAll(); qDebug() << buff.toHex() << " ...

  9. SSL单向认证和双向认证说明

    SSL单向认证和双向认证说明 一.SSL双向认证具体过程 浏览器发送一个连接请求给安全服务器. 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器. 客户浏览器检查服务器送过来的证书是否是由自己 ...

  10. 【AtCoder】AGC021

    A - Digit Sum 2 从高位到低位数的第i位以前前缀都相同,第i位比当前位上的数小1的情况下,后面都填9 枚举一下然后计算最大的就好 #include <bits/stdc++.h&g ...