欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > java中跨域问题及解决方案

java中跨域问题及解决方案

2025/6/18 21:45:09 来源:https://blog.csdn.net/qq_41590294/article/details/148634710  浏览:    关键词:java中跨域问题及解决方案

1. 什么是跨域

从不同的地址访问另外一个地址就是跨域

2.跨域一定会有异常吗

跨域异常只会在前端发生,后端跨域不会产生异常
因为浏览器有一个叫做同源策略的东西,它发现不同域之间的访问是不安全的行为,会禁止,所以会抛出异常

3.五种解决跨域的方式

1. 跨域请求JSONP

前端配置

$.agax({url:’http://localhost:8080/cors/jsonp/1’,dataType:"jsonp",//jsonp:'a',不指定默认callback//jsonpCallback:"cc",不指定自动生产type:'GET',success:function(){alert(result.data);}});

后端配置:

@GetMapp("cors/jsonp/{id}")
public JSONObject getUser(@PathVariable Integer id,String callback){User user=new User("xushu","jsonp");return new JSONPObject(callback,new Resule<>(200,"SUCCESS",user))
}

好处:兼容各种浏览器
弊端:前端端都需要配置-耦合度高

2. 跨域请求cors【单一】

注意:需要用到@CrossOrigin注解

前端配置

$.agax({url:’http://localhost:8080/cors/1’,type:'GET',success:function(){alert(result.data);}});

后端配置:

@GetMapp("cors/{id}")
@CrossOrigin("http://localhost:8081")
public JSONObject getUser(@PathVariable Integer id){User user=new User("xushu","jsonp");return new Resule<>(200,"SUCCESS",user)}

注解:只支持单一的接口

3. 跨域请求cors【批量】

注意:后端需要实现WebMvcConfigurer

后端配置:

public class MyWebMvcConfigurer implements WebMvcConfigurer{@Overridepublic void addCorsMappings(CorsRegistry registry){registry.addMapping("user/*")//配置那些接口可以跨域.allowedOrigins("http://localhost:8080")//配置那些来源有权跨域.allowedMethods("GET","POST","DELETE","PUT");//配置运行跨域访问方法};
}

4. 跨域请求cors【所有】

注意:后端需要配置过滤器

后端配置:

@Configuration
public class MyCorsFilter{//@Beanpublic CorsFilter corsFilter(){//1.创建CORS配置对象CorsConfiguration config=new CorsConfiguration();//支持域名config.addAllowedOriginPattern("*");//是否发送cookieconfig.setAllowCredentials(true);//支持请求方式config.addAllowedMethod("*");//添加地址映射UrlBasedCorsConfigurationSource corsConfigurationSource=new UrlBasedCorsConfigurationSource ();corsConfigurationSource.registerCorsConfiguration("/**",config);//返回corsFilter对象return new CorsFilter(corsConfigurationSource);}
}

优缺点:

优点:前端不需要写代码就可以支持,主要靠服务器进行配置**
缺点:IE浏览器不能低于IE10,浏览器一旦发现AJAX请求跨域,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉【option请求】

5.nginx 反向代理

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词