自学内容网 自学内容网

@CrossOrigin 解决跨域资源共享(CORS)问题

        @CrossOrigin 是一个 Spring 框架提供的注解,用于解决跨域资源共享(CORS)问题。跨域问题通常发生在当一个网页尝试通过 AJAX 请求访问与该网页不同源(协议、域名或端口不同)的资源时。由于浏览器的同源策略限制,这种请求会被阻止。

        使用 @CrossOrigin 注解可以告诉 Spring 框架,允许来自不同源的请求访问特定的控制器方法或整个控制器。这个注解可以应用在类级别或方法级别:

  • 在类级别:作用于类中的所有处理方法。
  • 在方法级别:仅作用于特定的处理方法。

 @CrossOrigin 注解的一些常用属性包括:

  • origins:指定允许访问的域,可以使用通配符 * 表示允许所有域。
  • methods:指定允许的 HTTP 方法,如 GETPOSTPUTDELETE 等。
  • allowedHeaders:指定允许的请求头。
  • exposedHeaders:指定允许客户端访问的响应头。
  • allowCredentials:是否允许发送Cookie。设置为 "true" 时,origins 不能使用 * 通配符。
  • maxAge:预检请求的结果可以被缓存的时间。

        例如,以下代码展示了如何在控制器类级别启用跨域支持,允许所有域通过 GET 和 POST 方法访问:

@CrossOrigin(origins = "*", methods = {RequestMethod.GET, RequestMethod.POST})
@RestController
@RequestMapping("/api")
public class MyController {
    // 控制器方法
}

在使用  @CrossOrigin 时,需要注意以下几点:

  1. 安全性:在生产环境中,应谨慎使用 * 通配符,因为它会允许任何域的访问,可能会带来安全风险。
  2. 预检请求:对于非简单请求(如使用除 GETHEADPOST 之外的方法,或者 Content-Type 不是 text/plainapplication/x-www-form-urlencodedmultipart/form-data),浏览器会先发送一个 OPTIONS 请求进行预检。
  3. 配置优先级:如果同时在类和方法上使用了 @CrossOrigin 注解,Spring 会合并这些注解的属性以创建最终的 CORS 配置。

原文地址:https://blog.csdn.net/q322359/article/details/142856118

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!