📜  cors spring - Java (1)

📅  最后修改于: 2023-12-03 15:30:05.898000             🧑  作者: Mango

CORS Spring - Java

概述

CORS(跨源资源共享)是一种允许Web页面从不同的源访问资源的机制。Spring框架提供了对CORS的支持。在本文中,我们将介绍如何在Spring中开启CORS。

开启CORS

要开启CORS,您需要在Spring配置文件中添加以下代码段:

<mvc:cors>
    <mvc:mapping path="/**"/>
</mvc:cors>

这行代码告诉Spring将CORS应用于所有的URL路径。如果您只想应用于特定的路径,您可以在<mvc:mapping path="your-path"/>中定义路径。

允许访问

默认情况下,跨源访问是被禁止的。您可以通过以下代码开启访问:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
            .allowedOrigins("http://domain.com")
            .allowedMethods("PUT", "DELETE")
            .allowedHeaders("header1", "header2", "header3")
            .exposedHeaders("header1", "header2")
            .allowCredentials(false).maxAge(3600);
    }
}

在这个例子中,我们允许了http://domain.com的跨源请求,并且允许PUTDELETE方法。我们还指定了允许的头文件和暴露的头文件,allowCredentials被设置为false,表示不允许共享Cookie,过期时间设置为3600秒。

Spring安全

如果您在Spring应用程序中使用了Spring Security,您可以在WebSecurity配置中进行配置。以下是一个例子:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
 
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .cors().and()
            .authorizeRequests()
                .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .httpBasic();
    }
}

在这个例子中,我们通过调用cors()来开启CORS,然后我们允许跨域访问所有的OPTIONS请求(OPTIONS请求是一个特殊的HTTP请求,用于确定支持的方法和头文件)。所有其他的请求都需要进行认证。

结论

在本文中,我们介绍了如何在Spring中开启CORS,并允许跨域访问。我们还提供了一些使用Spring Security的示例代码。CORS是一种重要的Web安全机制,被广泛用于现代Web应用程序开发中。