全网整合营销服务商

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

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


相关文章: 宝塔新建站点为何无法访问?如何排查?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  如何续费美橙建站之星域名及服务?  如何高效生成建站之星成品网站源码?  C++中引用和指针有什么区别?(代码说明)  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  模具网站制作流程,如何找模具客户?  无锡营销型网站制作公司,无锡网选车牌流程?  如何配置支付宝与微信支付功能?  如何快速辨别茅台真假?关键步骤解析  表情包在线制作网站免费,表情包怎么弄?  建站VPS选购需注意哪些关键参数?  如何在阿里云虚拟主机上快速搭建个人网站?  如何通过WDCP绑定主域名及创建子域名站点?  网站制作报价单模板图片,小松挖机官方网站报价?  如何快速配置高效服务器建站软件?  如何快速搭建高效WAP手机网站吸引移动用户?  Android自定义控件实现温度旋转按钮效果  利用JavaScript实现拖拽改变元素大小  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  建站主机CVM配置优化、SEO策略与性能提升指南  开封网站制作公司,网络用语开封是什么意思?  网站专业制作公司有哪些,做一个公司网站要多少钱?  ,石家庄四十八中学官网?  个人摄影网站制作流程,摄影爱好者都去什么网站?  c# 在ASP.NET Core中管理和取消后台任务  详解jQuery中基本的动画方法  h5网站制作工具有哪些,h5页面制作工具有哪些?  微信推文制作网站有哪些,怎么做微信推文,急?  如何通过虚拟主机快速完成网站搭建?  黑客如何通过漏洞一步步攻陷网站服务器?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何在IIS7上新建站点并设置安全权限?  TestNG的testng.xml配置文件怎么写  如何快速重置建站主机并恢复默认配置?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  实例解析Array和String方法  小建面朝正北,A点实际方位是否存在偏差?  建站主机如何安装配置?新手必看操作指南  建站之星备案流程有哪些注意事项?  在线制作视频的网站有哪些,电脑如何制作视频短片?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  ,网站推广常用方法?  如何在阿里云购买域名并搭建网站?  如何在云服务器上快速搭建个人网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  ,想在网上投简历,哪几个网站比较好?  完全自定义免费建站平台:主题模板在线生成一站式服务  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解 

您的项目需求

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