📜  spring enable cors - Java (1)

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

Spring Enable CORS - Java

如果您正在使用Spring框架作为您的后端框架,并且您的客户端应用程序是使用JavaScript编写的,则可能需要开启跨域资源共享(CORS)以允许您的客户端应用程序从您的服务器访问资源。在本文中,我们将介绍在Spring中启用CORS的方法。

什么是CORS?

跨域资源共享(CORS)是一种机制,允许 Web 应用程序从不同的域访问其资源。例如,HTTP://domain-a.com 的JavaScript代码可以请求api.HTTP://domain-b.com 的资源,而不会违反浏览器中单个源(Cross-Origin Resource Sharing)的原则。

启用CORS

在Spring中启用CORS很简单。只需在您的配置类中注解@CrossOrigin即可启用。您可以在该注解中指定允许的来源和 HTTP 方法。

@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://localhost:8080")
public class MyController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello World!";
    }
}

在上面的示例中,我们使用@CrossOrigin(origins = "http://localhost:8080")指定了允许的来源。这表示只有来自http://localhost:8080的请求才会被允许处理此接口。但是,可以使用"*"表示允许所有来源。如果您只希望允许某些HTTP方法,则可以使用方法参数代替origins。例如:

@RestController
@RequestMapping("/api")
@CrossOrigin(methods = {RequestMethod.GET, RequestMethod.POST})
public class MyController {
    // ...
}

在上面的示例中,我们只允许 GET 和 POST 请求。

全局配置

您还可以在全局范围内配置跨源支持。您可以在WebMvcConfigurer配置类中指定允许的来源和 HTTP 方法。

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
            .allowedOrigins("http://localhost:8080")
            .allowedMethods("GET", "POST");
    }
}

在上面的示例中,我们使用WebMvcConfigurer.addCorsMappings方法来指定允许的来源和 HTTP 方法。我们还指定了哪些路径需要跨域支持。

更多配置选项

除了使用以上介绍的方式,您还可以在@CrossOrigin注解中指定其他配置选项。以下是有关@CrossOrigin其他选项及其用法的一些常见示例:

maxAge

此选项指定服务器应缓存预检请求的时间(以秒为单位)。默认值为30分钟(1800秒)。例如:

@CrossOrigin(maxAge = 3600)
allowedHeaders

此选项指定允许的 HTTP 头。默认情况下,所有允许的头都是应用程序/ json ,text/plain和application/x-www-form-urlencoded。以下示例将允许AuthorizationContent-Type头:

@CrossOrigin(allowedHeaders = {"Authorization", "Content-Type"})
exposedHeaders

此选项设置哪些 HTTP 头可以公开访问。例如:

@CrossOrigin(exposedHeaders = {"Authorization", "Location"})
allowCredentials

此选项表示是否允许发送凭据(例如,cookies)。

@CrossOrigin(allowCredentials = "true")
结论

在本文中,我们介绍了如何启用跨域资源共享(CORS)以允许JavaScript应用程序从Spring Web应用程序访问资源。我们以@CrossOrigin注解的使用为例,并向您展示了其他一些配置选项。如果你想在Spring中支持跨域请求,那么这篇文章就对你有所帮助。