java实现跨域请求的两种方式

2025-11-25 19:07:41

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

java实现跨域请求的两种方式

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)
                  }
              });
          });

java实现跨域请求的两种方式

3、这里是jsonp的后端代码,主要是拼接参数。statuscallback是在前端设置的方法名,这里直接获取。拼接参数,其余的交由浏览器去处理。

@RequestMapping(value = "/updateStatus")


@ResponseBody
public String updateStatus(@RequestParam("statuscallback") String callback,String id){
  ServiceResult<String> result= EmplErrorService.updateStatus(id);
  return callback+"("+JSON.toJSONString(result)+")";
}

java实现跨域请求的两种方式

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

java实现跨域请求的两种方式

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;
   }
}

java实现跨域请求的两种方式

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>

java实现跨域请求的两种方式

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

java实现跨域请求的两种方式

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢