博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 2中对于CORS跨域访问的快速支持
阅读量:5815 次
发布时间:2019-06-18

本文共 1703 字,大约阅读时间需要 5 分钟。

原文:https://www.jianshu.com/p/840b4f83c3b5

 

 

目前的程序开发,大部分都采用前后台分离。这样一来,就都会碰到跨域资源共享CORS的问题。Spring Boot 2 对此提供了很好的解决方法。

更多CORS介绍,请看这里:

1、注解实现

在Spring Boot 2中,提供了注解的方式来对CORS跨域访问进行支持。

1.1 在方法上注解

可以将@CrossOrigin注解在方法上。这样该方法可以被跨域访问。

 
在方法上标注

1.2 在Controller上注解

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

 
在Controller上标注

1.3 同时注解

二者同时注解也可以,此时取的是二者的组合。

如下所示,Controller可以被所有来源访问,但/user只能被访问。

 
组合注解

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方法,可以达到全局配置的目标。

@Configurationpublic 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项目MySQL向MariaDB的迁移
查看>>
《Linux企业应用案例精解(第2版)》新书发布
查看>>
虚基类
查看>>
微信小程序周报(第三期)
查看>>
数据[BQTY tarPosm]
查看>>
SAE Tornado Worker 的一点使用经历
查看>>
构建部署脚本
查看>>
排序算法 总结
查看>>
进程与系统调用
查看>>
深入理解HTTP Session
查看>>
一个十年没更新的项目还有没有必要玩
查看>>
Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收藏
查看>>
MySQL高可用架构之MHA
查看>>
PlayScala实战 - 如何优雅地取出多层Future中的结果?
查看>>
Play For Scala 开发指南 - 第3章 常用类介绍
查看>>
Android开发效率—Eclipse快捷键
查看>>
iOS添加黑色蒙层
查看>>
Hibernate遇到的问题与解决方案
查看>>
hibernate 读取 blob 字段
查看>>
rsync简明手册
查看>>