java实现跨域请求的两种方式
1、方式一:使用jquery的jsonp请求,这种请求已经和ajax有本质的区别,具体的可以自行百度区别,这里直接讲如何使用。

2、function (index) { //点击确定后执行的方法体debugger; $.ajax({ type : "GET", url : 'http://******:8081/ldap/updateStatus', data : { id : id }, dataType : "jsonp", jsonp:'statuscallback', success : function(data) { debugger; layer.msg("处理完成!"); layer.close(index); //执行完后关闭 ajaxRequest(1, true) } }); });

3、这里是jsonp的后端代码,主要是拼接参数。statuscallback是在前端设置的方法名,这里直接获取。拼接参数,其余的交由浏览器去处理。@RequestMapping(value = "/updateStatus")@ResponseBodypublic String updateStatus(@RequestParam("statuscallback") String callback,String id){ ServiceResult<String> result= EmplErrorService.updateStatus(id); return callback+"("+JSON.toJSONString(result)+")";}

4、方法二:cors解决跨域问题,原理可以自行百度,这里直接是实例。spring4以后对cors有支持,之前的版本是没有的。这里需要注意。

5、直接继承CorsFilter,创建MyCorsFilter。public class MyCorsFilter extends CorsFilter { public MyCorsFilter() { super(configurationSource()); } private static UrlBasedCorsConfigurationSource configurationSource() { // CORS授权 CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); config.addExposedHeader(HttpHeaders.SET_COOKIE); config.setMaxAge(3600L); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return source; }}

6、配置web.xml使之生效。<filter> <filter-name>CORS<稆糨孝汶;/filter-name> <filter-class>com.iflytek.psdataservice.filter.MyCorsFilter</filter-class> <init-param> <param-name>cors.allowOrigin</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>cors.supportedMethods</param-name> <param-value>GET, POST, HEAD, PUT, DELETE</param-value> </init-param> <init-param> <param-name>cors.supportedHeaders</param-name> <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified,hash,ticket</param-value> </init-param> <init-param> <param-name>cors.exposedHeaders</param-name> <param-value>Set-Cookie</param-value> </init-param> <init-param> <param-name>cors.supportsCredentials</param-name> <param-value>true</param-value> </init-param></filter><filter-mapping> <filter-name>CORS</filter-name> <url-pattern>/*</url-pattern></filter-mapping>

7、前端的ajax请求直接是和平时非跨域请求一致的。此实例亲测有效,可以直接复制代码使用。
