zoukankan      html  css  js  c++  java
  • Spring Boot 通过 CORS 实现跨域

    1、使用注解 @CrossOrigin 实现跨域

    如,有两个 Spring Boot 项目 cors1 和 cors2。

    其中 cors1 为生产者,端口号为 8082;cors2 为消费者,端口号为 8083。

    cors1 中有一个 HelloController 类,代码如下:

    @RestController
    public class HelloController {
        @GetMapping("/hello")
        @CrossOrigin(origins = "http://localhost:8083") //使用该注解允许跨域
        public String hello(){
            return "hello cors1";
        }
    }
    

    其中

     @CrossOrigin(origins = "http://localhost:8083") //使用该注解允许跨域
    

    是实现跨域请求的关键,它允许来自http://localhost:8083的请求。

    cors2 中的 static 目录下有一个页面文件 index.html

    index.html 针对 cors1 发送 get 请求,代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
    </head>
    <body>
    <div id="app"></div>
    <input type="button" value="GET" onclick="getData()">
    <script >
        function getData() {
            $.get('http://localhost:8082/hello',function (msg) {
                $("#app").html(msg);
            })
        }
    </script>
    </body>
    </html>
    

    最后访问 http://localhost:8083/index.html,如下图:

    成功实现跨域请求。

    2、通过全局配置解决跨域请求

    全局配置只需要在配置类中重写 addCorsMappings 方法即可

    如,在 cors1 中新建一个 WebMvcConfig 类,它继承接口 WebMvcConfigurer,并重写其中的 addCorsMappings 方法,代码如下:

    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("http://localhost:8083")
                    .allowedHeaders("*")
                    .allowedMethods("*")
                    .maxAge(30 * 1000);
        }
    }
    

    这时,就不再需要使用注解 @CrossOrigin 了。

    参考文章:http://www.javaboy.org/2019/0613/springboot-cors.html

    每天学习一点点,每天进步一点点。

  • 相关阅读:
    IT题库-134 | String、StringBuffer和StringBuilder的区别
    Java NIO 总结
    Java 性能分析工具-JProfiler
    Java 性能分析工具-MAT
    java 获取dump文件
    GC总结
    String总结
    堆-对象的分配与回收过程
    java 生产环境调优排查总结
    记一次因为Gradle与Lombok不兼容导致编译时的内存溢出 Expiring Daemon because JVM heap space is exhausted
  • 原文地址:https://www.cnblogs.com/youcoding/p/13188123.html
Copyright © 2011-2022 走看看