SpringBoot使用Fastjosn优雅的提供jsonp跨域接口
跨域的方式有很多,jsonp
算是一种(jsonp的原理,这里不多赘述)。
使用Fastjson提供的ResponseBodyAdvice
可以优雅的实现jsonp跨域接口。
必须依赖
忽略SpringBoot的必须依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
添加 ResponseBodyAdvice 到ioc
@Bean
public JSONPResponseBodyAdvice jSONPResponseBodyAdvice() {
return new JSONPResponseBodyAdvice();
}
Jsonp接口方法,添加注解 @ResponseJSONP
该注解就一个属性:
callback
,用于指定客户端提供的回调参数
@RequestMapping("/test")
@Controller
public class TestController {
@GetMapping("/jsonp")
@ResponseJSONP(callback = "callback")
@ResponseBody
public Object jsonp() {
return Message.success("Hello");
}
}