侧边栏壁纸
  • 累计撰写 106 篇文章
  • 累计创建 19 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

SpringBoot2.x如何解决跨域问题

zero
2022-04-15 / 0 评论 / 0 点赞 / 7 阅读 / 3314 字
温馨提示:
本文最后更新于 2024-07-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、什么是源和跨域

源(origin)就是协议、域名和端口号。
URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口全部相同,则表示他们同源。否则,只要协议、域名、端口有任何一个不同,就是跨域。

URL

是否跨域

原因

https://www.baidu.com/more/index.html

不跨域

三要素相同

https://map.baidu.com/

跨域

域名不同

http://www.baidu.com/index.html

跨域

协议不同

https://www.baidu.com:81/index.html

跨域

端口号不同

二、什么是同源策略?

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

同源策略又分为以下两种:

DOM同源策略:禁止对不同源页面DOM 进行操作。这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的。
XMLHttpRequest同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求。

三、Spring Boot2.x跨域解决方案

1、使用@CrossOrigin注解

@RestController
public class HelloController {

    @CrossOrigin
    @RequestMapping("/hello")
    public String HelloSpring (){
        return "hello Java碎碎念!";
    }
}

2、WebMvcConfigurer对象示例代码

@Configuration
public class MyConfiguration {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/*")
                          .allowedOrigins("*")
                          .allowCredentials(true)
                          .allowedMethods("GET", "POST", "DELETE", "PUT","PATCH")
                          .maxAge(3600);
            }
        }
    }
}

0

评论区