美文网首页事务SpringBootspringcloud
Spring Boot 2中对于CORS跨域访问的快速支持

Spring Boot 2中对于CORS跨域访问的快速支持

作者: Jackeroo | 来源:发表于2018-08-19 05:07 被阅读222次

    目前的程序开发,大部分都采用前后台分离。这样一来,就都会碰到跨域资源共享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");
        }
    }
    

    如果项目已经上线不便修改,或者你干脆是因为懒得修改程序,可以去试试:
    Tomcat对于CORS跨域访问的快速支持

    相关文章

      网友评论

        本文标题:Spring Boot 2中对于CORS跨域访问的快速支持

        本文链接:https://www.haomeiwen.com/subject/wqpxiftx.html