Java CORS Error

2025年3月27日 | 阅读 2 分钟

Web 浏览器通过一种称为CORS (跨域资源共享) 的安全功能,阻止网站向其来源域以外的域发出请求。通过限制 Web 应用程序仅与来自其来源的资源进行交互,除非服务器明确允许,否则此安全功能可以保护用户。

Java 程序(例如 Spring Boot API)与前端客户端(AngularReact 等)通信时,如果前端和后端托管在不同的域或端口上,则经常会遇到CORS 问题。

什么是 CORS 错误?

当 Web 浏览器由于安全策略阻止对服务器的请求时,就会发生 CORS 错误。浏览器期望在服务器的响应中包含特定的 CORS 标头,以确定请求是否被允许。CORS 错误的常见示例如下:CORS 运行示意。

在 Java 应用程序中处理 CORS

在基于 Java 的 Web 应用程序(例如使用 Spring Boot 的应用程序)中,开发人员可以配置 CORS 支持来避免这些错误。在 Spring Boot 中处理 CORS 的最简单方法之一是使用 @CrossOrigin 注解或全局定义 CORS 配置。

1. 使用 @CrossOrigin 注解

@CrossOrigin 注解可以应用于控制器或特定端点,以指定允许哪些来源访问它们。

2. 全局 CORS 配置

或者,您可以通过定义 WebMvcConfigurer bean 来为整个 Spring Boot 应用程序全局配置 CORS。

Java CORS 中的常见错误

  1. 使用证书的通配符:Access-Control-Allow-Origin 标头中的通配符 (*) 将阻止包含凭证(如 cookie 或 HTTP 身份验证)的 CORS 请求成功。在涉及凭证时,应使用特定来源。
  2. 缺少预检请求支持:如果应用程序发送 PUT 或 DELETE 请求,浏览器将发出预检请求。请确保服务器在响应 HTTP OPTIONS 方法时发送了正确的 CORS 标头。
  3. 标头不正确:验证请求的 Access-Control-Allow-Headers 是否包含所有必需的自定义标头。

结论

在现代 Web 开发中,CORS 问题是一个常见问题,尤其是在使用不同的前端和后端服务时。通过了解 CORS 的工作原理并在 Java 应用程序中设置正确的 CORS 标头,您可以避免这些问题并确保前端和后端服务之间的顺畅通信。

您可以通过利用 Spring Boot 的 @CrossOrigin 注解或全局设置等技术来修复 CORS 问题,并增强应用程序的安全性和功能。


下一主题ArrayList 实现