JSONP跨域请求
发布时间 - 2026-01-10 23:23:20 点击率:次什么是跨域:

1、域名不同
2、域名相同端口不同
js出于对安全考虑不支持跨域请求。我们可以使用JSONP解决跨域问题。
一、JSONP是什么
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页js是无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。
原理:浏览器在js请求中,是允许通过script标签的src跨域请求,可以在请求的结果中添加回调方法名,在请求页面中定义方法,既可获取到跨域请求的数据。(js请求的不是一个单纯的json数据而是一段包含json数据的js脚本)
二、模拟JSONP
服务器域名:http://localhost:8081/rest/itemcat/list
客户端服务器:http://localhost:8082/test.html
1、普通的JS跨域请求
服务器数据:
客户端请求代码:
$(function(){
$.ajax( {url: "http://localhost:8081/rest/itemcat/list?callback=myFunction",
success: function(data){
console.info(data)
}});
});
结果
XMLHttpRequest cannot load http://localhost:8081/rest/itemcat/list?callback=myFunction. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8082' is therefore not allowed access.
2、模拟JSONP请求
客户端请求代码:
$(function(){
greateScript("http://localhost:8081/rest/itemcat/list");
function greateScript(src) {
$("<script><//script>").attr("src", src).appendTo("body")
}
});
结果:
list?_=1488425374097:1 Uncaught SyntaxError: Unexpected token :
三、使用JSONP
环境:
服务器域名:http://localhost:8081/rest/itemcat/list
客户端服务器:http://localhost:8082/test.html
服务端代码(本人使用springmvc4):
@RequestMapping("/itemcat/list")
@ResponseBody
public Object getItemCatList(String callback) {
CatResult catResult = itemCatService.getItemCatList();
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(catResult);
//设置JSONP回调函数
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}
客户端调用代码:
$(function(){
$.ajax(
{ url: "http://localhost:8081/rest/itemcat/list",
dataType: "jsonp",
jsonp: "callback",
success: function(data){
console.info(data)
}});
});
结果:
看返回结果可以发现返回的数据不是一段单纯的json数据,而是一段js函数。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# jsonp
# 跨域请求
# JSONP跨域GET请求解决Ajax跨域访问问题
# AJAX跨域请求之JSONP获取JSON数据
# 跨域请求的完美解决方法(JSONP
# CORS)
# JSONP跨域请求实例详解
# 关于JSONP跨域请求原理的深入解析
# 客户端
# 回调
# 是一个
# 不支持
# 可以使用
# 既可
# 可以得到
# 抓到
# 服务端
# 而不是
# 可用于
# rest
# list
# itemcat
# localhost
# center
# align
# function
# http
# pre
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
高端云建站费用究竟需要多少预算?
海南网站制作公司有哪些,海口网是哪家的?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何快速完成中国万网建站详细流程?
太平洋网站制作公司,网络用语太平洋是什么意思?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
Laravel如何使用Collections进行数据处理?(实用方法示例)
北京网站制作公司哪家好一点,北京租房网站有哪些?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Python函数文档自动校验_规范解析【教程】
潮流网站制作头像软件下载,适合母子的网名有哪些?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
如何用花生壳三步快速搭建专属网站?
如何快速搭建高效服务器建站系统?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
大连 网站制作,大连天途有线官网?
如何快速生成可下载的建站源码工具?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
*服务器网站为何频现安全漏洞?
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何撰写建站申请书?关键要点有哪些?
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
javascript基于原型链的继承及call和apply函数用法分析
Laravel如何实现文件上传和存储?(本地与S3配置)
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel怎么使用Intervention Image库处理图片上传和缩放
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
php json中文编码为null的解决办法
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
如何在万网主机上快速搭建网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
中国移动官方网站首页入口 中国移动官网网页登录
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
在Oracle关闭情况下如何修改spfile的参数
Laravel如何使用Blade模板引擎?(完整语法和示例)
,网页ppt怎么弄成自己的ppt?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
下一篇:Yii2为何性能高?
下一篇:Yii2为何性能高?

