Spring Boot 的 CORS 支持| baeldung


在本文中,我们展示了 Spring 如何为在我们的应用程序中启用 CORS 提供支持。
我们从控制器的配置开始。我们看到我们只需要添加注释@CrossOrigin就可以为一个特定的方法或整个控制器启用 CORS。
此外,我们了解到,为了在控制器外部控制 CORS 配置,我们可以使用 JavaConfig 或 XML 在配置文件中顺利执行此操作。

GitHub 上提供了示例的完整源代码。

原理
CORS 请求会自动分派到各种已注册的HandlerMappings。他们使用CorsProcessor 实现(默认为DefaultCorsProcessor )处理 CORS 预检请求并拦截 CORS 简单和实际请求,以添加相关的 CORS 响应标头(例如Access-Control-Allow-Origin)。

CorsConfiguration允许我们指定应如何处理 CORS 请求,包括允许的来源、标头和方法等。我们可以通过多种方式提供:

  • AbstractHandlerMapping#setCorsConfiguration()允许我们指定一个Map,其中多个CorsConfiguration映射到路径模式,例如/api/**。
  • 子类可以通过覆盖AbstractHandlerMapping#getCorsConfiguration(Object, HttpServletRequest)方法来提供自己的CorsConfiguration。
  • 处理程序可以实现CorsConfigurationSource 接口(就像ResourceHttpRequestHandler现在所做的那样)来为每个请求提供CorsConfiguration。

详细点击标题