全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JSONP跨域请求

什么是跨域:

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 


相关文章: 高防服务器如何保障网站安全无虞?  建站之星2.7模板快速切换与批量管理功能操作指南  如何快速生成可下载的建站源码工具?  内网网站制作软件,内网的网站如何发布到外网?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  建站之星安装提示数据库无法连接如何解决?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  宁波免费建站如何选择可靠模板与平台?  如何快速上传自定义模板至建站之星?  临沂网站制作公司有哪些,临沂第四中学官网?  如何用PHP工具快速搭建高效网站?  jQuery 常见小例汇总  上海网站制作开发公司,上海买房比较好的网站有哪些?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  常州企业网站制作公司,全国继续教育网怎么登录?  淘宝制作网站有哪些,淘宝网官网主页?  建站之星如何修改网站生成路径?  如何通过建站之星自助学习解决操作问题?  如何用低价快速搭建高质量网站?  如何通过PHP快速构建高效问答网站功能?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  建站之星多图banner生成与模板自定义指南  海南网站制作公司有哪些,海口网是哪家的?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  高性能网站服务器配置指南:安全稳定与高效建站核心方案  javascript中对象的定义、使用以及对象和原型链操作小结  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何配置WinSCP新建站点的密钥验证步骤?  5种Android数据存储方式汇总  湖北网站制作公司有哪些,湖北清能集团官网?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  魔方云NAT建站如何实现端口转发?  微信小程序 五星评分(包括半颗星评分)实例代码  建站之星如何保障用户数据免受黑客入侵?  如何在服务器上配置二级域名建站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  网站按钮制作软件,如何实现网页中按钮的自动点击?  建站主机选择指南:服务器配置与SEO优化实战技巧  制作电商网页,电商供应链怎么做?  如何在Windows虚拟主机上快速搭建网站?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  建站之星免费模板:自助建站系统与智能响应式一键生成  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站之星备案流程有哪些注意事项?  SQL查询语句优化的实用方法总结  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。