美文网首页
AJAX—跨域解决之JSONP

AJAX—跨域解决之JSONP

作者: __马帅傅__ | 来源:发表于2017-09-14 11:11 被阅读0次

一、跨域的问题:

      1.域:域名                                                                                                                                               2.跨域请求(访问):一个域名下的文件请求另外一个域名下的资源,就产生了跨域       

二、跨域问题本质:同源策略

        Netscape提出的一个著名的安全策略。现在所有支持JavaScript的浏览器都会使用这个策略。所谓同源是指,域名、协议、端口相同。当一个浏览器的两个tab页分别来打开百度和谷歌的页面。当一个百度浏览器执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会执行。同源策略保证了用户的信息安全,浏览器打开多个站点时,互相之间不能利用JavaScript获取对方站点的敏感信息。

三、跨域的解决:

       1.script标签                                                                                                                                          2.用script标签加载资源是没有跨域问题的

       在资源加载进来之前定义好一个函数,这个函数接收一个参数(数据),函数里面利用这个参数做一些事情。然后需要的时候通过script标签加载对应远程文件资源,当远程的文件资源被加载进来的时候,就会去执行我们前面定义好的函数,并且把数据当做这个函数的参数传入进去。

        3.当按钮被点击时再去加载远程资源

四、JSON和JSONP:

       JSON : (JavaScript Object Notation)是一种轻量级的数据交换模式。

       JSONP :  

        1.JSON With Padding的略称。它是一个非官方的协议,它允许在服务器端集成script tags返回至客户端,通过JavaScript callback的形式实现跨域访问。                                                                         2.JSONP就像是JSON+Padding一样(padding这里我们理解为填充)。<script>标签的src属性并不被同源策略所约束,所以可以获取任何服务上的脚本并执行。

五、JSONP的简单实现模式,或者说是JSONP的原型:

       创建一个回调函数,然后在远程服务上调用这个函数并且将JSON数据形式作为参数传递,完成回调。将JSON数据填充进回调函数,这就是JSON+Padding。

      test.js中的代码:调用callback函数,并以JSON数据形式callback({message:'"success"});作为参数传参,完成回调。

六、真正的JSONP服务

      百度的AJAX搜索接口:                                                                                                                               https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=?&cb=?  

      接口获取方法:

1.进入百度搜索页 2.按下f12,点击Network 3.点击百度搜索输入框,出现以上数据 4.点击数据后,右边的Request URL即为接口

      wd=?这个问号表示你要搜索的内容,最重要的是第二个cb=?,这个是正如其名表示回调函数的名称,也就是将你自己在客户端定义回调函数的函数名传给服务端,服务端则会返回你定义的回调函数名的方法,将获取的JSON数据传入这个方法完成回调。

通过JSONP跨域获取的数据

七、JSONP与AJAX: 

       JSONP方式使用的是script标签请求网络资源,AJAX是主动请求网络资源。JSONP不使用XMLHttpRequest对象加载资源,不属于真正意义上的AJAX。

相关文章

  • 解决ajax跨域问题

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

  • ajax跨域请求

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

  • 实用程序库

    解决ajax跨域方法: jsonp 服务器代理 跨域资源共享 一、moment momentjs官网[https:...

  • 跨域上传图片并预览

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

  • 交互那些事(二)

    说完ajax我想必须说说jsonp了,谈到jsonp就必须先说说跨域,首先ajax是不能跨域的,除非后台允许跨域或...

  • 珠峰 AJAX --- JSONP跨域

    珠峰 AJAX --- JSONP跨域AJAX(异步 javascript and XMLHTTPReq...

  • 使用JSONP解决ajax跨域

    在日常开发中,不免遇到跨域的问题。在这里我们介绍使用Jsonp来解决ajax跨域的问题 什么是跨域? 跨域,指的是...

  • Ajax请求跨域问题

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

  • vue项目解决axios jsonp请求

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

  • Flask-cors跨域

    什么是跨域 为什么要考虑跨域问题 同源策略 解决跨域问题 方式一: 使用 JSONP (一种非Ajax技术,需要前...

网友评论

      本文标题:AJAX—跨域解决之JSONP

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