文章目录
前言
文章主要会对SpringMVC4.1版本提供的AbstractJsonpResponseBodyAdvice类,以及高版本SpringMVC弃用该类后如何继续支持JSONP数据跨域方式
一、SpringBoot跨域请求支持JSONP
项目中有可能会遇到跨域请求,所以需要组装支持跨域请求的JSONP数据,在SpringMVC 4.1版本中为我们提供了AbstractJsonpResponseBodyAdvice 类来支持跨域请求。由于使用JSONP数据方式是不安全的spingboot2.0开始已经不推荐了, Spring 5.07 和4.3.18开始已经弃用AbstractJsonpResponseBodyAdvice,在版本5.1中被完全移除,并且建议使用Cross-Origin方式来支持(文章这里就不展开)。这里主要对于AbstractJsonpResponseBodyAdvice 方式如何使用以及高版本弃用后旧的项目如何继续支持展开。
1.AbstractJsonpResponseBodyAdvice 类支持JSONP
代码如下(示例):
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;
import com.alone.jpa.controller.UserController;
//只对UserController生效
@ControllerAdvice(basePackageClasses = {
UserController.class})
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("callback");
}
}
2. 实现ResponseBodyAdvice 类方式
代码如下(示例):
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONPObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alone.jpa.controller.UserController;
import org