Spring boot如何开启跨域配置

 更新时间:2024年08月16日 08:57:18   作者:卿者飞翔  
这篇文章主要介绍了Spring boot如何开启跨域配置问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Spring boot开启跨域配置

跨域(Cross-Origin)是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时,域名、协议或端口不同的这种情况。

具体来说,如果一个网页试图通过脚本(如JavaScript)从不同源的服务器上请求数据,就会触发浏览器的同源策略限制,导致跨域问题。

同源策略(Same-origin policy)是Web浏览器的一个安全功能,它要求Web浏览器仅允许执行来自同一站点的脚本访问该站点的资源。

这意味着,如果网页A尝试访问网页B的资源,且这两个网页的协议、域名或端口号中任何一个不相同,浏览器就会阻止这种访问,以防止恶意网站读取另一个网站的数据。

Spring boot解决跨域问题

一、controller添加注解

在controller层添加@CrossOrigin就可以解决跨域问题

@RestController
@RequestMapping("test")
@Slf4j
@CrossOrigin
public class DemoController {

    @RequestMapping("message")
    public String test(@RequestBody Message message) {
        log.info("{}", JSON.toJSONString(message));
        return "test";
    }
}

二、全局配置

添加如下全局配置就可以统一配置跨域支持

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    /**
     * 开启全局跨域配置
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }

}

三、通过拦截器配置

通过如下拦截器配置,也可以支持跨域

public class CorsInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //表示接受任意域名的请求,也可以指定域名
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));

        //该字段可选,是个布尔值,表示是否可以携带cookie
        response.setHeader("Access-Control-Allow-Credentials", "true");

        response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");

        response.setHeader("Access-Control-Allow-Headers", "*");


        //这里可以不加,但是其他语言开发的话记得处理options请求
        /**
         * 非简单请求是对那种对服务器有特殊要求的请求,
         * 比如请求方式是PUT或者DELETE,或者Content-Type字段类型是application/json。
         * 都会在正式通信之前,增加一次HTTP请求,称之为预检。浏览器会先询问服务器,当前网页所在域名是否在服务器的许可名单之中,
         * 服务器允许之后,浏览器会发出正式的XMLHttpRequest请求
         */
        if(HttpMethod.OPTIONS.toString().equals(request.getMethod())){
            return true;
        }

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

总结

Spring boot解决跨域问题还是很方便的,遇到跨域问题,通过以上方式都可以实现解决

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 输入多行字符串或者多个int数值的方法

    Java 输入多行字符串或者多个int数值的方法

    今天小编就为大家分享一篇Java 输入多行字符串或者多个int数值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Java源码解析之ConcurrentHashMap

    Java源码解析之ConcurrentHashMap

    今天带大家分析Java源码,文中对Java ConcurrentHashMap介绍的非常详细,有代码示例,对正在学习Java的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • String类型转localDate,date转localDate的实现代码

    String类型转localDate,date转localDate的实现代码

    这篇文章主要介绍了String类型转localDate,date转localDate的实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 图文详解JAVA实现哈夫曼树

    图文详解JAVA实现哈夫曼树

    所谓哈夫曼树就是要求最小加权路径长度,这是什么意思呢?简而言之,就是要所有的节点对应的路径长度(高度-1)乘以该节点的权值,然后保证这些结果之和最小。下面这篇文章就给大家详细介绍
    2016-08-08
  • Java线程池由浅入深掌握到精通

    Java线程池由浅入深掌握到精通

    什么是线程池?很简单,简单看名字就知道是装有线程的池子,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用
    2021-09-09
  • Java Native关键字原理及作用解析

    Java Native关键字原理及作用解析

    这篇文章主要介绍了Java Native关键字原理及作用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • java中forward转发的使用

    java中forward转发的使用

    在Java中,forward转发是一种非常常见且重要的操作,我们将深入探讨forward的概念和用法,并给出一些代码示例来帮助读者更好地理解,感兴趣的可以了解下
    2023-11-11
  • JAVA中使用FileWriter写数据到文本文件步骤详解

    JAVA中使用FileWriter写数据到文本文件步骤详解

    这篇文章主要介绍了JAVA中使用FileWriter写数据到文本文件步骤详解,FileWriter类提供了多种写入字符的方法,包括写入单个字符、写入字符数组和写入字符串等,它还提供了一些其他的方法,如刷新缓冲区、关闭文件等,需要的朋友可以参考下
    2023-10-10
  • Java二叉搜索树基础原理与实现方法详解

    Java二叉搜索树基础原理与实现方法详解

    这篇文章主要介绍了Java二叉搜索树基础原理与实现方法,结合图文与实例形式详细分析了Java二叉搜索树的基本概念、原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • 解决Spring Boot 在localhost域奇怪的404问题(Mac book pro)

    解决Spring Boot 在localhost域奇怪的404问题(Mac book pro)

    这篇文章主要介绍了解决Spring Boot 在localhost域奇怪的404问题(Mac book pro),需要的朋友可以参考下
    2017-09-09

最新评论