详解java 中Spring jsonp 跨域请求的实例
发布时间 - 2026-01-11 02:48:50 点击率:次详解java 中Spring jsonp 跨域请求的实例

jsonp介绍
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解。
0、引入jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
其他介绍就不多说了,开始上手吧。
1、继承AbstractJsonpResponseBodyAdvice类JsonpAdvice,并加上@RestControllerAdvice注解
/*RestControllerAdvice的值指定拦截的包名*/
@RestControllerAdvice("com.ctrl")
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("callback", "jsonp");
/*callback是url请求拦截的参数名,如果拦截成功会将返回数据传入函数执行回调函数*/
}
}
2、创建ctrl类
package com.ctrl;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloCtrl {
@RequestMapping("/hello")
public Map<String,Object> hello(HttpServletRequest request){
Map<String,Object>data = new HashMap<String,Object>();
data.put("suc", true);
data.put("msg", "save suc");
data.put("param", request.getParameter("a") + "==" + request.getParameter("d"));
return data ;
}
}
4、创建启动app类:
package com.services;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages="com")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
5、前端调用:
<!DOCTYPE html>
<html>
<head>
<title>jquery跨域实例</title>
<!-- jquery版本可以不是3.2.1版本的 -->
<script type="text/javascript" src="jquery-3.2.1.js"></script>
<script type="text/javascript">
$(function() {
/* 这是快捷调用,callback 是advice中设置的,?是保留参数,
jquery会替换掉这个问号 url可是不同于请求地址的任何url*/
$.getJSON("/hello?callback=?", function(data) {
//$("#showcontent").text("Result:" + data)
});
/*使用ajax方法调用*/
$.ajax({
type : "get",
async : false,
url : "/hello",
dataType : "jsonp",//数据类型为jsonp
data:{a:"b",d:"c"},
type:"POST",
jsonp : "callback",//服务端用于接收callback调用的function名的参数
success : function(data) {
$("#showcontent").text("Result:" + data.suc + " requestParam:" + data.param )
},
error : function() {
alert('fail');
}
});
})
</script>
</head>
<body>
<div id="showcontent"></div>
</body>
</html>
服务器端也不一定要用spring 任何技术都可以,只要返回格式是下面的格式就可以,调用一个哈桑农户,出传入一个json或者是字符串就可以了。
/**/test01({"suc":true,"msg":"save suc"});
直接访问返回数据:
以上使用关于java 中Spring jsonp 跨域请求的实例详解,如有疑问请留言或者到本站社区交流讨论, 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Spring
# jsonp
# jsonp的实例
# jsonp跨域请求
# JAVA通过Filter实现允许服务跨域请求的方法
# Java实现CORS跨域请求的实现方法
# 详解Java Ajax jsonp 跨域请求
# Java利用cors实现跨域请求实例
# 使用CORS实现JavaWeb跨域请求问题的方法
# 解决跨域请求
# NG返回403(403并不一定是NG问题)
# 就可以
# 是一个
# 这是
# 也不
# 说了
# 如有
# 不多
# 希望能
# 要用
# 或者是
# 谢谢大家
# 可以得到
# 会将
# 抓到
# 回调
# 服务端
# 而不是
# 疑问请
# 哈桑
# 可用于
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
高端网站建设与定制开发一站式解决方案 中企动力
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何在橙子建站中快速调整背景颜色?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
昵图网官方站入口 昵图网素材图库官网入口
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
网站优化排名时,需要考虑哪些问题呢?
java中使用zxing批量生成二维码立牌
如何续费美橙建站之星域名及服务?
实例解析angularjs的filter过滤器
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
高防服务器:AI智能防御DDoS攻击与数据安全保障
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何用花生壳三步快速搭建专属网站?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
香港服务器租用费用高吗?如何避免常见误区?
如何在自有机房高效搭建专业网站?
西安专业网站制作公司有哪些,陕西省建行官方网站?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel如何保护应用免受CSRF攻击?(原理和示例)
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
怎么用AI帮你设计一套个性化的手机App图标?
微信h5制作网站有哪些,免费微信H5页面制作工具?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何在宝塔面板中创建新站点?
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
如何在宝塔面板中修改默认建站目录?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
Windows Hello人脸识别突然无法使用
Swift中swift中的switch 语句
如何确保FTP站点访问权限与数据传输安全?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
如何用AWS免费套餐快速搭建高效网站?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
C++用Dijkstra(迪杰斯特拉)算法求最短路径
网站制作壁纸教程视频,电脑壁纸网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
音响网站制作视频教程,隆霸音响官方网站?
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
用yum安装MySQLdb模块的步骤方法

