全网整合营销服务商

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

免费咨询热线: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 


相关文章: TestNG的testng.xml配置文件怎么写  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何通过虚拟主机快速搭建个人网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何实现建站之星域名转发设置?  高端建站如何打造兼具美学与转化的品牌官网?  建站之星在线客服如何快速接入解答?  建站主机服务器选购指南:轻量应用与VPS配置解析  无锡营销型网站制作公司,无锡网选车牌流程?  如何在Windows环境下新建FTP站点并设置权限?  北京制作网站的公司,北京铁路集团官方网站?  c++怎么用jemalloc c++替换默认内存分配器【性能】  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  宁波自助建站系统如何快速打造专业企业网站?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  如何在阿里云域名上完成建站全流程?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何快速生成专业多端适配建站电话?  ,交易猫的商品怎么发布到网站上去?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  如何选择高性价比服务器搭建个人网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  建站主机选哪家性价比最高?  如何彻底卸载建站之星软件?  实例解析angularjs的filter过滤器  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?    西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何快速搭建支持数据库操作的智能建站平台?  制作网站怎么制作,*游戏网站怎么搭建?  XML的“混合内容”是什么 怎么用DTD或XSD定义  学校建站服务器如何选型才能满足性能需求?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  已有域名如何快速搭建专属网站?  Swift中switch语句区间和元组模式匹配  存储型VPS适合搭建中小型网站吗?  如何选择CMS系统实现快速建站与SEO优化?  网站制作公司排行榜,抖音怎样做个人官方网站  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何确保FTP站点访问权限与数据传输安全?  想学网站制作怎么学,建立一个网站要花费多少?  如何在VPS电脑上快速搭建网站?  如何选择网络建站服务器?高效建站必看指南  网站制作价目表怎么做,珍爱网婚介费用多少?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  定制建站哪家更专业可靠?推荐榜单揭晓  建站VPS能否同时实现高效与安全翻墙? 

您的项目需求

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