后端支持跨域

为了让前端⁡项目能够顺利调用后端接口,我们需要在后端配置跨域支持。在 c⁡onfig 包下创建跨域配置类,代码如下:

/**
 * 全局跨域配置
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 覆盖所有请求
        registry.addMapping("/**")
                // 允许发送 Cookie
                .allowCredentials(true)
                // 放行哪些域名(必须用 patterns,否则 * 会和 allowCredentials 冲突)
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .exposedHeaders("*");
    }
}

我是一个springboot初学者.我想知道这是为了解决什么问题?为什么要这么做?详细解释一下代码.

回答: 你好!作为一名 Spring Boot 初学者,能问出这个问题非常好。这是在现代 Web 开发中一个极其重要且常见的知识点。

我来为你详细解释一下这段代码的作用、它解决了什么问题,以及为什么你需要这样做。


1. 这是为了解决什么问题?

一句话总结:这段代码解决了浏览器的“同源策略”(Same-Origin Policy)所导致的“跨域请求”(CORS)问题。

什么是“同源策略”?

“同源策略”是浏览器的一种核心安全功能。它规定,一个网页(脚本)只能向**与它自己“同源”**的服务器发起请求。

”(Origin)由三个部分组成:

  1. 协议 (Protocol):例如 http://https://
  2. 域名 (Domain):例如 localhostwww.google.com
  3. 端口 (Port):例如 :8080:3000

只有这三者完全一致,才算“同源”。

为什么你会遇到这个问题?

在现代的“前后端分离”开发模式中,你的项目通常分为两部分:

  1. 前端项目:比如一个 Vue 或 React 应用,它运行在(例如)http://localhost:3000
  2. 后端项目:就是你正在编写的 Spring Boot 应用,它运行在(例如)http://localhost:8080