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


     
    在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
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    SqlServer2008 / SqlServer2012 禁用windows登录,sa忘记密码或密码过期如何登陆
    windows下批处理保留指定日期下的文件
    centos7上使用git clone出现问题
    VS2015编译Teamtalk的Windows客户端(转)
    Mac Book触摸板失灵的解决办法(触摸板按下失灵)
    系统设计原则
    命令“regsvr32 /s /n /i:user "XXXXXX"”已退出,代码为 3
    Android实现开机自动运行程序
    Java并发之CyclicBarrier、CountDownLatch、Phaser
    Java多线程之ThreadLocal
  • 原文地址:https://www.cnblogs.com/shihaiming/p/9567420.html
Copyright © 2020-2023  润新知