SpringBoot跨域请求支持JSONP

本文探讨了SpringBoot在SpringMVC 4.1版本中如何使用AbstractJsonpResponseBodyAdvice支持JSONP跨域请求,以及在高版本中由于安全性问题被弃用后,如何通过实现ResponseBodyAdvice接口来继续支持JSONP。文章提供了代码示例,包括普通请求和跨域请求的处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

文章主要会对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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值