美文网首页
Ajax跨域请求_jsonp

Ajax跨域请求_jsonp

作者: Ugfly | 来源:发表于2018-02-19 00:14 被阅读0次

同源策略 :
- 是由网景公司提出的一个著名的安全策略.现在所有支持JavaScript的浏览器都会使用这个策略.
- 所谓同源是指 : 域名 协议 端口相同.
- 例如 : 两个项目之间,端口不同.项目一向项目二发送请求的时候.
- 项目二可以接受,也可处理.但是不能向项目一响应数据.
- 会报一个 --已拦截跨源请求:同源策略禁止🚫读取位置项目一ip+端口+路径的远程资源.(原因:CORS头缺少'Access-Control-Allow-Origin'.
- !!!这里要注意 : 项目二中的访问已经发生,说明是浏览器对非同源请求返回的结果做了拦截

Jsonp(只支持GET请求)
- jsonp是json用来跨域的一个东西. 它的原理是通过script标签的跨域特性来绕过同源策略.
- Json是数据交换的格式,
- jsonp是数据传递双方约定的方式


1.png 2.png
- 看!  这是算不算是跨了个站.   


继续
- 在项目一中 创建一个script标签
- 在src里面,填写你要访问的跨域路径,也就是项目二的ip+端口+路径

- 现在 你再刷新项目一的页面,就会触发script标签,此时会打印出来项目二中传来的值

以上
- 就是jsonp简单的实现模式,也可说是jsonp的原型; 创建一个回调函数,然后在远程服务上调用这个函数并且将json数据形式作为参数传递,完成回调.

划重点!
- 将JSON数据填充进回调函数,这就是JSONP的 JSON+Padding的含义
- JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。


一般情况下,我们会希望这个script标签能够动态的调用,而不是像项目一中因为固定在html中。

demo
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <p>
        <input type="button" onclick="Jsonp1();"  value='提交'/>
    </p>

    <p>
        <input type="button" onclick="Jsonp2();" value='提交'/>
    </p>

    <script type="text/javascript" src="jquery-1.12.4.js"></script>
    <script>
        function Jsonp1(){
            var tag = document.createElement('script');
            tag.src = "http://c2.com:8000/test/";
            document.head.appendChild(tag);
            document.head.removeChild(tag);

        }

        function Jsonp2(){
            $.ajax({
                url: "http://c2.com:8000/test/",
                type: 'GET',
                dataType: 'JSONP',
                success: function(data, statusText, xmlHttpRequest){
                    console.log(data);
                }
            })
        }
    </script>
</body>
</html>

相关文章

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

  • 跨域实战解决方案

    一.跨域方案 1.JSONP跨域 (1)前端发起jQuery ajax 的get请求 $.getJSON...

  • jsonp解决ajax跨域的原理

    1.jsonp只能解决GET类型的ajax请求跨域问题2.jsonp请求不是ajax请求,而是一般的get请求3....

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • 跨域上传图片并预览

    跨域上传文件 之前解决跨域问题都是使用的JQuery的JSONP类型的Ajax请求,JSONP原理是让服务器把数据...

  • 正则 jsonp 本地存储 jqueryui

    jsonp ajax只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到jsonp技术,jsonp可...

  • 正则 jsonp 本地存储 jqueryui

    jsonp ajax只能请求同一个域下的数据或资源,有时候需要跨域请求数据,就需要用到jsonp技术,jsonp可...

  • Ajax请求跨域问题

    遇到ajax请求跨域问题,解决方式,改dataType为jsonp json和jsonp返回数据格式json格式 ...

  • vue项目解决axios jsonp请求

    众所周知,jsonp一般是解决前端跨域的渠道之一,先从浅入深讲解过渡的历史。 ajax模式请求下的jsonp跨域 ...

  • 跨域请求解决办法

    CORS:即跨域资源共享,它允许浏览器向跨域服务器发送ajax请求 与JSONP的区别:jsonp是绕过了同源限制...

网友评论

      本文标题:Ajax跨域请求_jsonp

      本文链接:https://www.haomeiwen.com/subject/wmqitftx.html