SpringBoot解决跨域问题

喜欢ヅ旅行 2023-02-19 11:29 11阅读 0赞

方案一

在请求的方法或者Controller上加上@CrossOrigin注解,如下

  1. @CrossOrigin
  2. @RequestMapping("attention")
  3. public ResponseVO auditAttention(@Context HttpServletRequest request, @Context HttpServletResponse response) {
  4. }

方案二

配置一个全局的跨域管理器

  1. @Configuration
  2. public class CORSConfiguration {
  3. @Bean
  4. public WebMvcConfigurer corsConfigurer() {
  5. return new WebMvcConfigurerAdapter() {
  6. @Override
  7. public void addCorsMappings(CorsRegistry registry) {
  8. registry.addMapping("/**")
  9. .allowedOrigins("*")
  10. .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
  11. .allowCredentials(false).maxAge(3600);
  12. }
  13. };
  14. }
  15. }

其他尝试过的无效的方案

  1. 方案1
  2. response.addHeader("Access-Control-Allow-Origin", "*");
  3. response.addHeader("Access-Control-Allow-Credentials", "true");
  4. response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
  5. response.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");
  6. 方案2
  7. response.setHeader("Access-Control-Allow-Origin", "*");
  8. response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD");
  9. response.setHeader("Access-Control-Max-Age", "3600");
  10. response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");

上面的方案或者上面方案的变体我尝试过不下50次,依然无效,也不知道什么原因,找了2天没找到问题所在,总而言之就是配置了跟没配置一样,理论上如果你配置了,在响应的报文头部会出现以下字样
在这里插入图片描述
但我不管有没有进行如下设置,响应头依然是下面这样的
在这里插入图片描述

总结

我尝试过的就这几种,单单说后台好像还有其他的解决方案,但我没有尝试过,其他的需要前端配合的也有解决方案吧,比如jsonp。

参考:http://www.spring4all.com/article/177

发表评论

表情:
评论列表 (有 0 条评论,11人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Springboot解决问题

    (跨域资源共享)策略,允许跨域请求。常见的解决方法是在后端代码中添加CORS配置,允许特定的域名或所有域名的请求。可以使用Spring Boot提供的@CrossOrig...

    相关 springboot解决问题

        跨域是前后端分离,前端页面发起异步ajax请求,而浏览器因为同源策略导致请求失败,请求正确到了服务端,而且服务端也正常处理,只不过浏览器不认可,所以跨域问题的门槛是浏览