博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax+Spring MVC实现跨域请求(JSONP)
阅读量:7094 次
发布时间:2019-06-28

本文共 1289 字,大约阅读时间需要 4 分钟。

hot3.png

JSONP解释

在解释JSONP之前,我们需要了解下”同源策略“这个概念,这对理解跨域有帮助。基于安全的原因,是存在同源策略机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载额文档的属性。有点绕,说的简单点就是浏览器限制脚本只能和同协议、同域名、同端口的脚本进行交互。

JSONP就是为了解决这一问题的,JSONP是英文JSON with Padding的缩写,是一个非官方的协议。他允许服务端生成script tags返回值客户端,通过javascript callback的形式来实现站点访问。JSONP是一种script tag的注入,将server返回的response添加到页面是实现特定功能。

简而言之,JSONP本身不是复杂的东西,就是通过scirpt标签对javascript文档的动态解析绕过了浏览器的同源策略。

JSONP原理及实现

接下来,来实际模拟一个跨域请求的解决方案。后端为Spring MVC架构的,前端则通过Ajax进行跨域访问。

1、首先客户端需要注册一个callback(服务端通过该callback(jsonp)可以得到js函数名(jsonpCallback)),然后以Script语

法的方式,生成一个function

2、接下来,将JSON数据直接以入参的方式,放置到function中,这样就生成了一段js语法文档,返回给客户端。

3、最后客户端浏览器动态的解析script标签,并执行返回的语法文档片段,此时数据作为参数传入到了预先定义好的

回调函数里(动态执行回调函数)。

这种动态解析js文档和eval函数是类似的。

经过一番努力,解决如下:

修改host 文件

127.0.0.1  

127.0.0.1

170912_vz8J_2325281.png

@RequestMapping("/getJsonp")  @ResponseBody  public JSONPObject getJsonp(String callbackparam){ Company company=new Company(); company.setAddress("宝驾(北京)信息技术有限公司"); company.setEmail("123456@qq.com"); company.setName("宝驾(上海)信息技术邮箱公司"); company .setPhone("12345678912");   return new JSONPObject(callbackparam, company);   }   
     
 
      

使用 jQuery AJAX 来改变文本

 
按钮1 
 
按钮2     

转载于:https://my.oschina.net/u/2325281/blog/508199

你可能感兴趣的文章
Linux学习笔记<二十二>——计划任务
查看>>
Python3 通过 pika 连接 RabbitMQ 的基本用法
查看>>
C/C++踩坑记录(二)一段有趣的常量字符串
查看>>
GDI+ 学习记录(2): 画笔线帽 - Cap
查看>>
一张表里的多个字段值 取自 字典表里的text 的查询
查看>>
golang tcp socket
查看>>
特么的程序员励志故事(小IT职员在北京5年买了500W的房子)
查看>>
全选和反选 checkbox
查看>>
wget
查看>>
Linux设置用户登录提示
查看>>
js metro仿win8卡片效果
查看>>
Samba服务器的配置 , nfs配置解析
查看>>
我的友情链接
查看>>
document.body属性
查看>>
c++ 广义表
查看>>
esxi中虚拟机中GTX1070
查看>>
docker
查看>>
vc char * 转换为 LPCTSTR的方法
查看>>
Spring(一)——总体介绍
查看>>
select count(*)和select count(1)的区别
查看>>