手机版

JSONP跨域请�

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

什么是跨域:

1.不同的域名

2.相同的域名和不同的端口

出于安全原因,Js不支持跨域请求。我们可以用JSONP来解决跨域的问题。

1.什么是JSONP

JSONP(JSON with Padding)是JSON的一种“使用模式”,可以用来解决主流浏览器的跨域数据访问问题。由于同源策略,一般来说,除了HTML脚本元素之外,位于server1.example.com的js无法与server1.example.com以外的服务器进行通信。有了脚本元素的这种开放策略,Web页面就可以获得其他来源动态生成的JSON数据,这种使用模式被称为JSONP。JSONP捕获的数据不是JSON,而是任意的JavaScript,由JavaScript文字翻译器执行,而不是JSON解析器。

原则:在js请求中,浏览器允许通过脚本标签的src进行跨域请求。回调方法名称可以添加到请求结果中,方法可以在请求页面中定义,不仅可以获得跨域请求的数据。(js请求包含json数据的js脚本,而不是简单的json数据)

第二,模拟JSONP

服务器域名:http://localhost :8081/rest/item cat/list

客户端服务器:http://localhost :8082/test . html

1.常见的JS跨域请求

服务器数据:

客户端请求代码:

$(function(){ $)。Ajax({ URL : ' http://localhost :8081/rest/item cat/list?callback=myFunction ',success : function(data){ console . info(data)} });});结果

XMLHttpRequest无法加载http://localhost :8081/rest/item cat/list?回调=myfunction .请求的资源上不存在“访问控制-允许-原始”头.原始“http://localhost :8082”用于不允许的访问. 2 .模拟JSONP请求

客户端请求代码:

$(function(){ greateScript(' http://localhost :8081/rest/item cat/list ');函数greateScript(src){ $(' script//script ')。attr('src ',src)。appendo(' body ')} });结果:

名单?_=1488425374097:1未捕获的语法分析器:意外标记:

第三,使用JSONP

环境:

服务器域名:http://localhost :8081/rest/item cat/list

客户端服务器:http://localhost :8082/test . html

服务器代码(我使用springmvc4):

@ request mapping('/item cat/list ')@ response body public Object getitemtcatlist(字符串回调){ CatResult CatResult=itemtcatservice . getitemtcatlist();mapping jacksonvalue mapping jacksonvalue=new mapping jacksonvalue(catResult);//设置JSONP回调函数mapping jacksonvalue . setjsonfunction(回调);返回mappingJacksonValue}客户端调用代码:

$(function(){ $)。Ajax({ URL : ' http://localhost :8081/rest/item cat/list '、dataType: 'jsonp '、jsonp: 'callback '、success:函数(数据){ console.info(数据)} });});结果:

查看返回的结果,我们可以发现返回的数据不是简单的json数据,而是一个js函数。

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助,也希望多多支持我们!

版权声明:JSONP跨域请�是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。