什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?

1. 什么是跨域问题 ?

跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。

跨域问题的 3 种情况:

  1. 协议不同,例如 http 和 https;
  1. 域名不同;
  • 一级域名、二级域名..不同,都算跨域请求
  1. 端口不同.
  • 80
  • 443

为什么要有跨域问题 ?

跨域问题本质上是浏览器的一种保护机制,它诞生的初衷是为了保证用户的安全,防止恶意网站窃取数据。但是这个保护机制也带来新的问题,它使得不同站点之间的正常调用,也会遇到阻碍。

2. Spring MVC 如何解决跨域问题 ?

  1. 定义一个配置类;

  2. 在配置类中写一个方法,返回 WebMvcConfigurer 对象,并重写 addCorsMappings 方法。

java 复制代码
@Configuration
public class MyConfiguration {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                // 设置允许跨域的请求规则【响应头里添加标识】
                registry.addMapping("/api/**");
            }
        };
    }
}

跨域问题,它的请求可以到达后端,只不过在后端返回响应给前端的时候,浏览器会做跨域问题的验证。

为什么不在前端验证 ?

因为前端代码是可以修改的,通过开发者工具都是可以伪造的,所以在前端验证没有意义。

相关推荐
ChinaRainbowSea6 分钟前
补充:问题:CORS ,前后端访问跨域问题
java·spring boot·后端·spring
hqxstudying2 小时前
java依赖注入方法
java·spring·log4j·ioc·依赖
春生野草3 小时前
关于SpringMVC的整理
spring
Bug退退退1233 小时前
RabbitMQ 高级特性之重试机制
java·分布式·spring·rabbitmq
hello早上好4 小时前
CGLIB代理核心原理
java·spring
先睡11 小时前
Redis的缓存击穿和缓存雪崩
redis·spring·缓存
Bug退退退12315 小时前
RabbitMQ 高级特性之死信队列
java·分布式·spring·rabbitmq
booooooty21 小时前
基于Spring AI Alibaba的多智能体RAG应用
java·人工智能·spring·多智能体·rag·spring ai·ai alibaba
极光雨雨21 小时前
Spring Bean 控制销毁顺序的方法总结
java·spring
Spirit_NKlaus21 小时前
解决HttpServletRequest无法获取@RequestBody修饰的参数
java·spring boot·spring