澳门正规赌博十大网站-澳门游戏网站
做最好的网站

澳门网上合法赌博网址大全:使用jquery的jsonp如何

澳门网上合法赌博网址大全:使用jquery的jsonp如何发起跨域请求及其原理详解,jsonp跨域请求。前言

跨域的安全限制都以对浏览器端来讲的,服务器端是不设有跨域安全范围的。

澳门网上合法赌博网址大全:使用jquery的jsonp如何发起跨域请求及其原理详解,jsonp跨域请求。jQuery jsonp跨域诉求

澳门网上合法赌博网址大全:使用jquery的jsonp如何发起跨域请求及其原理详解,jsonp跨域请求。浏览器的同源计策限制从二个源加载的文书档案或脚本与来自另二个源的能源实行互相。

正文主要给大家介绍的是关于jquery jsonp发起跨域央浼及其规律的连锁内容,分享出去供我们参照他事他说加以考察学习,上面话没多少说了,来一齐拜见详细的牵线:

澳门网上合法赌博网址大全:使用jquery的jsonp如何发起跨域请求及其原理详解,jsonp跨域请求。浏览器的同源战术限制从一个源加载的文书档案或脚本与来自另二个源的财富开始展览交互。

1、什么是同源战略

源正是{协议,主机,端口}定义的。独有这么些值完全等同才认为多个财富是同源的。

看个例证:

澳门网上合法赌博网址大全 1

如若要在js中倡导跨域乞求,则要开始展览局地非正规管理了。

澳门网上合法赌博网址大全:使用jquery的jsonp如何发起跨域请求及其原理详解,jsonp跨域请求。自个儿那边讲的是jQuery jsonp的跨域诉求格局。

跨域的平安限制都是对浏览器端来讲的,服务器端是不设有跨域安全范围的。

只要协议,端口和主机对于多个页面是一律的,则四个页面具备同样的源,不然便是不一样源的。

2、直接伸手分化源的数码

用node.js开启了多个劳务,端口分歧,属于区别源,2000端口页面中的点击按钮会向6000端口的劳动获取数据。

澳门网上合法赌博网址大全 2

ajax恳求代码

$.ajax({
            url: 'https://localhost:4000/getInfo',
            type: 'GET',
            dataType: 'json',
            success: function (res) {
                $('.tt').text(JSON.stringify(res));
            }
        }
);

服务端的代码:刚开首学node.js,代码不是很好,见谅哈

var server = http.createServer(function (req, res) {

    var params = url.parse(req.url, true).query;
    var data = {
        'name': 'ddxg',
        'age': '22'
    };
    if (req.method == 'GET' && req.url == '/') {
        res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
        fs.createReadStream(__dirname   '/index.html').pipe(res);
    } else {
        res.writeHead(200, {'Content-Type': 'application/json;charset=utf-8'});
        res.end(JSON.stringify(data));
    }

});

直白点击按键获取数据的话会报下边包车型大巴错

澳门网上合法赌博网址大全 3

野趣便是:已拦截跨源央浼:同源战术禁止读取位于 澳门网上合法赌博网址大全:使用jquery的jsonp如何发起跨域请求及其原理详解,jsonp跨域请求。 的中远距离能源。(原因:COENCORES 头缺乏‘Access-Control-Allow-Origin’)。

浏览器的同源计谋限制从二个源加载的文书档案或脚本与来自另多个源的财富开始展览交互。

若果要在js里提倡跨域央浼,则要举行部分特殊管理了。大概,你能够把央浼发到自个儿的服务端,再通过后台代码发起呼吁,再将数据重返前端。

3、jquery的jsonp格局及其规律

在页面上直接发起二个跨域的ajax央浼是不可能的,可是,在页面上引进差异域上的js脚本、图片、录制等是能够的,像图片,只要连接是对的就足以访谈。

因而,就能够运用<script src=""> 来完成跨域央浼。

当点击”点击跨域获取数据”的按键时,增加二个

    跨域请求


3000端口
点击跨域获取数据

123

<script src='js/jquery-3.2.1.min.js'></script><script type="text/javascript">
    function getInfo (res) {
        $('.tt').text(res.name);
    }

    $(".getInfo").on("click", function () {
        //向头部输入一个脚本,该脚本发起一个跨域请求
        $("head").append("<script src='https://localhost:4000/getInfo?callback=getInfo'>");
    });
</script>
服务端的代码:

var server = http.createServer(function (req, res) {

    var params = url.parse(req.url, true).query;
    var data = {
        name: 'ddxg',
        age: 22
    };
    if (req.method == 'GET' && req.url == '/') {
        res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
        fs.createReadStream(__dirname   '/index.html').pipe(res);
    } else {
        var callbackName = params.callback;
        console.log(req.url);
        res.writeHead(200, {'Content-Type': 'application/json;charset=utf-8'});
        res.end(callbackName '('   JSON.stringify(data)   ')');
    }

});

在浏览器中查看要求确实是有数量再次回到的,head标签中扩张了三个script标签。

澳门网上合法赌博网址大全 4

澳门网上合法赌博网址大全 5

与此相类似就完结了跨域的伏乞,不过正如费心,需求自身写脚本发起呼吁,然后写个回调函数管理多少,不是很有益。

只要协商,端口和主机对于三个页面是均等的,则四个页面具有同样的源,不然正是不一致源的。

 

4、jquery的jsonp格局跨域诉求

在ajax诉求代码中,需布置叁个dataType:’jsonp’,jsonp钦赐服务器重回的数据类型为jsonp格式,並且jQuery自动在再三再四中扩充了callback参数,这一个参数是即兴的。ajax中的success方法就跟上边的getInfo同样,假使有success函数则暗许success()作为回调函数。

ajax的代码:

$.ajax({
            url: 'https://localhost:4000/getInfo',
            type: 'GET',
            dataType: 'jsonp',
            success: function (res) {
                $('.tt').text(JSON.stringify(res));
            }
        });

服务端的代码不改变。

恳请是足以获取数据的,况兼呼吁自动抬高了callback参数

澳门网上合法赌博网址大全 6

澳门网上合法赌博网址大全 7

注意:

设置了type:"jsonp" 方式后不协助POST方式跨域央求,尽管内定成POST方式,会活动转为GET形式。

若是服务端设置成POST形式了,这就不可能落到实处跨域诉求了。

jquery的jsonp的兑现格局实在就是script脚本伏乞地址的艺术同样,只是ajax的jsonp对其做了打包,更方便使用。

倘诺要在js里提倡跨域央求,则要实行部分极其管理了。大概,你可以把央浼发到自身的服务端,再通过后台代码发起呼吁,再将数据再次来到前端。

那边讲下行使jquery的jsonp怎么着发起跨域央浼及其规律。

此处讲下利用jquery的jsonp怎样发起跨域诉求及其规律。

 

先看下计划条件:多少个端口不雷同,构成跨域乞求的原则。

先看下策动条件:多个端口不等同,构成跨域乞请的规格。

获取数据:获取数据的端口为9090

获取数据:获取数据的端口为9090

澳门网上合法赌博网址大全 8

澳门网上合法赌博网址大全 9

伸手数据:乞求数据的端口为8080

恳请数据:央求数据的端口为8080

澳门网上合法赌博网址大全 10

澳门网上合法赌博网址大全 11

1、先看下直接发起ajax乞求会怎么着

 

上边是倡导呼吁端的代码:

1、先看下直接发起ajax诉求会什么

<%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>跨域测试</title>
 <script src="js/jquery-1.7.2.js"></script>
 <script>
 $(document).ready(function () {

  $("#btn").click(function () {
  $.ajax({
   url: 'http://localhost:9090/student',
   type: 'GET',
   success: function (data) {
   $(text).val(data);
   }
  });

  });

 });
 </script>
</head>
<body>
 <input id="btn" type="button" value="跨域获取数据" />
 <textarea id="text" style="width: 400px; height: 100px;"></textarea>
</body>
</html>

上边是发起呼吁端的代码:

呼吁的结果如下图:能够见到跨域央求因为浏览器的同源计谋被拦住了。

澳门网上合法赌博网址大全 12

澳门网上合法赌博网址大全 13

澳门网上合法赌博网址大全 14

2、接下去看什么发起跨域乞求。化解跨域诉求的点子有成都百货上千,这里只说一下jquery的jsop方式及其规律。

 1 <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8"  language="java" %>
 2 <html>
 3 <head>
 4     <title>跨域测试</title>
 5     <script src="js/jquery-1.7.2.js"></script>
 6     <script>
 7         $(document).ready(function () {
 8             
 9             $("#btn").click(function () {
10                 $.ajax({
11                     url: 'http://localhost:9090/student',
12                     type: 'GET',
13                     success: function (data) {
14                         $(text).val(data);
15                     }
16                 });
17 
18             });
19             
20         });
21     </script>
22 </head>
23 <body>
24     <input id="btn" type="button" value="跨域获取数据" />
25     <textarea id="text" style="width: 400px; height: 100px;"></textarea>
26 </body>
27 </html>

率先我们供给驾驭,在页面上直接发起一个跨域的ajax诉求是不得以的,不过,在页面上引进分歧域上的js脚本却是能够的,如同您能够在友好的页面上应用<img src=""> 标签来随便展现有个别域上的图样同样。

澳门网上合法赌博网址大全 15

比方本人在8080端口的页面上呼吁三个9090端口的图样:可以看到一贯通过src跨域伏乞是足以的。

澳门网上合法赌博网址大全 16

澳门网上合法赌博网址大全 17

恳请的结果如下图:可以观察跨域央浼因为浏览器的同源战术被截留了。

3、那么看下怎么样使用<script src="">来形成三个跨域乞请:

澳门网上合法赌博网址大全 18

当点击"跨域获取数据"的按键时,增多叁个<script>标签,用于发起跨域哀求;注意看央浼地址前边带了三个callback=showData的参数;

 

showData就是回调函数名称,传到后台,用于包裹数据。数据再次来到到前面贰个后,正是showData(result)的款式,因为是script脚本,所以自动调用showData函数,而result正是showData的参数。

2、接下去看什么发起跨域要求。化解跨域诉求的主意有众多,这里只说一下jquery的jsop格局及其规律。

到现在,大家算是跨域把多少诉求回来了,可是正如费心,需求和谐写脚本发起呼吁,然后写个回调函数管理多少,不是很有益。

第一大家要求精晓,在页面上一贯发起二个跨域的ajax供给是不可能的,但是,在页面上引进分化域上的js脚本却是能够的,就如您能够在团结的页面上行使<img src=""> 标签来随便展现有个别域上的图纸一样。

<%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>跨域测试</title>
 <script src="js/jquery-1.7.2.js"></script>
 <script>
 //回调函数
 function showData (result) {
  var data = JSON.stringify(result); //json对象转成字符串
  $("#text").val(data);
 }

 $(document).ready(function () {

  $("#btn").click(function () {
  //向头部输入一个脚本,该脚本发起一个跨域请求
  $("head").append("<script src='http://localhost:9090/student?callback=showData'></script>");
  });

 });
 </script>
</head>
<body>
 <input id="btn" type="button" value="跨域获取数据" />
 <textarea id="text" style="width: 400px; height: 100px;"></textarea>

</body>
</html>

诸如作者在8080端口的页面上呼吁五个9090端口的图形:能够看看一直通过src跨域央求是足以的。

服务端:

澳门网上合法赌博网址大全 19

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 response.setCharacterEncoding("UTF-8");
 response.setContentType("text/html;charset=UTF-8");

 //数据
 List<Student> studentList = getStudentList();


 JSONArray jsonArray = JSONArray.fromObject(studentList);
 String result = jsonArray.toString();

 //前端传过来的回调函数名称
 String callback = request.getParameter("callback");
 //用回调函数名称包裹返回数据,这样,返回数据就作为回调函数的参数传回去了
 result = callback   "("   result   ")";

 response.getWriter().write(result);
}

 

结果:

3、那么看下如何行使<script src="">来成功贰个跨域乞求:

澳门网上合法赌博网址大全 20

  当点击"跨域获取数据"的开关时,加多二个<script>标签,用于发起跨域诉求;注意看恳求地址前面带了叁个callback=showData的参数;

4、再来看jquery的jsonp格局跨域须要:

  showData就是回调函数名称,传到后台,用于包裹数据。数据重返到前面一个后,就是showData(result)的款式,因为是script脚本,所以自动调用showData函数,而result就是showData的参数。

服务端代码不改变,js代码如下:最简便易行的格局,只需配备一个dataType:'jsonp',就能够倡导一个跨域央求。jsonp钦命服务器再次回到的数据类型为jsonp格式,能够看发起的伸手路线,自动带了二个callback=xxx,xxx是jquery随机生成的贰个回调函数名称。

  至此,大家到底跨域把多少央浼回来了,可是比较费心,需求自身写脚本发起呼吁,然后写个回调函数管理多少,不是很平价。

此地的success就跟上边的showData同样,假若有success函数则暗中同意success()作为回调函数。

澳门网上合法赌博网址大全 21

<%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
 <title>跨域测试</title>
 <script src="js/jquery-1.7.2.js"></script>
 <script>

 $(document).ready(function () {

  $("#btn").click(function () {

  $.ajax({
   url: "http://localhost:9090/student",
   type: "GET",
   dataType: "jsonp", //指定服务器返回的数据类型
   success: function (data) {
   var result = JSON.stringify(data); //json对象转成字符串
   $("#text").val(result);
   }
  });

  });

 });
 </script>
</head>
<body>
 <input id="btn" type="button" value="跨域获取数据" />
 <textarea id="text" style="width: 400px; height: 100px;"></textarea>

</body>
</html>

澳门网上合法赌博网址大全 22

效果:

 1 <%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8"  language="java" %>
 2 <html>
 3 <head>
 4     <title>跨域测试</title>
 5     <script src="js/jquery-1.7.2.js"></script>
 6     <script>
 7         //回调函数
 8         function showData (result) {
 9             var data = JSON.stringify(result); //json对象转成字符串
10             $("#text").val(data);
11         }
12 
13         $(document).ready(function () {
14 
15             $("#btn").click(function () {
16                 //向头部输入一个脚本,该脚本发起一个跨域请求
17                 $("head").append("<script src='http://localhost:9090/student?callback=showData'></script>");
18             });
19 
20         });
21     </script>
22 </head>
23 <body>
24     <input id="btn" type="button" value="跨域获取数据" />
25     <textarea id="text" style="width: 400px; height: 100px;"></textarea>
26 
27 </body>
28 </html>

本文由澳门正规赌博十大网站发布于澳门游戏网站,转载请注明出处:澳门网上合法赌博网址大全:使用jquery的jsonp如何