CorsRegistry 是 Spring MVC 中用于配置跨域资源共享(CORS)的核心类之一。通过 CorsRegistry,开发者可以全局配置允许的跨域请求来源、方法、头部等信息

org.springframework.web.servlet.config.annotation.CorsRegistry 是 Spring MVC 中用于配置跨域资源共享(CORS)的核心类之一。通过 CorsRegistry,开发者可以全局配置允许的跨域请求来源、方法、头部等信息。
在这里插入图片描述

以下是对 CorsRegistry 的常用配置项详解:


1. addMapping(String path)

  • 作用:指定需要启用 CORS 的 URL 路径。

  • 示例

    registry.addMapping("/api/**");
    
  • 说明:支持通配符 ** 匹配多级路径。


2. allowedOrigins(String... origins)

  • 作用:设置允许访问的来源(Origin),即请求头中的 Origin 字段值必须在该列表中。

  • 示例

    registry.allowedOrigins("https://example.com", "https://test.com");
    
  • 注意:不建议使用 allowedOrigins("*") 来允许所有来源,因为这会带来安全风险,特别是当 allowCredentials()true 时。


3. allowedOriginPatterns(String... patterns)

  • 作用:与 allowedOrigins 类似,但支持通配符模式匹配来源,如 "https://*.example.com"
  • 示例
    registry.allowedOriginPatterns("https://*.example.com");
    

4. allowedMethods(String... methods)

  • 作用:设置允许的 HTTP 方法(GET、POST 等)。

  • 示例

    registry.allowedMethods("GET", "POST");
    
  • 默认值:如果不设置,默认允许所有方法。


5. allowedHeaders(String... headers)

  • 作用:设置允许的请求头字段。

  • 示例

    registry.allowedHeaders("Content-Type", "Authorization");
    
  • 默认值:如果不设置,默认允许所有请求头。


6. exposedHeaders(String... headers)

  • 作用:设置哪些响应头可以暴露给客户端(浏览器)。
  • 示例
    registry.exposedHeaders("X-Custom-Header");
    

7. maxAge(long maxAge)

  • 作用:设置预检请求(preflight request)缓存时间(单位:秒)。

  • 示例

    registry.maxAge(3600); // 缓存1小时
    
  • 默认值:默认为 1800 秒(30 分钟)。


8. allowCredentials(boolean allow)

  • 作用:是否允许发送 Cookie 或认证信息(如 withCredentials)。

  • 示例

    registry.allowCredentials(true);
    
  • 注意:如果设置了 allowCredentials(true),则不能将 allowedOrigins 设置为 "*",否则会抛出异常。


✅ 配置总结表格

方法名参数类型作用描述
addMappingString指定需要启用 CORS 的 URL 路径
allowedOriginsString...设置允许的来源(Origin)
allowedOriginPatternsString...设置允许的来源模式(支持通配符)
allowedMethodsString...设置允许的 HTTP 方法
allowedHeadersString...设置允许的请求头
exposedHeadersString...设置可暴露的响应头
maxAgelong设置预检请求缓存时间(秒)
allowCredentialsboolean是否允许携带凭据(如 Cookie)

示例代码

@Configuration
@EnableWebMvc
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("https://example.com")
                .allowedMethods("GET", "POST")
                .allowedHeaders("Content-Type", "Authorization")
                .exposedHeaders("X-Custom-Header")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

如需更细粒度控制,也可以结合 @CrossOrigin 注解在 Controller 或方法级别进行局部配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱的叹息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值