ajax04

4、同源策略

跨域问题:域名。协议。端口其中之一不同就是跨域
同源策略:安全性角度考虑的,域名。协议。端口都必须相同
只要有一个不相同就是跨域
什么是跨域

        同源策略是浏览器的一种安全策略,所谓同源指的是请求             URL地址中的协议、域名和端口号都相同,只要其中之一               不相同就是跨域。
 同源策略主要是为了保证浏览器的安全性
 在同源策略下,浏览器不允许Ajax跨域获取服务器数据
               说简单点:跨域是指从一个域名的网页去请求另一个                域名的资源。只要协议、域名、端口有任何一个的不                  同,就被当作是跨域。

http协议端口是80
ajax直接得不到跨域数据
跨域解决方案
1、jsonp,开发接口简单,没有兼容问题
2、document.domain + iframe
3、location.hash + iframe
4、window.name + iframe
5、window.postMessage
6、flash 等第三方插件(没落了)
99%的公司都在使用jsonp。
注:前端解决跨域问题的8种方案(有兴趣的同学课下研究)
http://www.cnblogs.com/JChen666/p/3399951.html
 5、JSONP的原理(1)

           静态script标签的src属性进行跨域请求:同步
                如果使用src这种方法进行跨域的话,一定要把这段                     获取数据的代码上面线先行加载,使用数据的方法                           放在后加载

        这种方法的缺点就是非常的不灵活,存在的两个主要的问题:
                               1、必须保证加载的顺序
                                  2、不方便通过程序传递参数

这种方法已经极少使用,了解即可
利用script标签的跨域能力,这就是jsonp的基础。
利用js构造一个script标签,把json的url赋给script的 scr属性,把这个script插入到dom里,让浏览器去获取。
script标签里面的async属性表示异步加载资源,默认情况下是同步加载
6、JSONP的原理(2)
本质: html里的foo函数由谁调用?实际上有服务器响应的内容(这里的内容就是js代码-函数调用foo(123))调用
通过jsonp来访问一个url地址,返回的内容是一个函数调用,并且通过这个函数调用,来传递一些参数,这个参数可以是一些普通数值(例如123),当然这个数值你也可以做的稍微复杂一点

         动态创建script标签,通过标签的src属性发送请求
         动态创建script标签发出去的请求是异步请求
        服务器响应的内容是【函数调用】foo(data实参)

7、JSONP的原理(3)
jq是支持JSONP,但是前提必须先指定 dataType:’jsonp’,的形式,默认情况下jq帮你加上参数的传递,把方法的名字默认传到了后端,并且默认值是:callback=自动生成了一个方法名字,所以后端必须叫callback,如果后端名字改为cb,则前面必须加上jsonp:’cb’,所以实际上传的是cb;
jsonp属性的作用就是自定义参数名字(callback=abc 这里的名字abc指的是等号前面的键,后端根据这个键获取方法名,jquery的默认参数名称是callback)
jsonpCallback:’abc’,
这个属性的作用就是自定义回调函数的名字(abc=dd ,这里的名字dd指的是等号后面的值)
后端根据你函数的名字dd返回相应的函数调用
JSONP本质并不是ajax
1、jsonp的本质:动态创建script标签,然后通过它src属性发送跨域请求,然后服务器响应的数据格式为【函数调用(foo实参)】
所以在发送请求之前必须显示先声明一个函数,并且函数的名字与参数中传递的名字要一致,这里声明的函数是由服务器响应的内容,
(实际就是一段js代码-函数调用)来调用

2、注意:ajax和jsonp其实本质上是不同的东西。
ajax的核心是通过XmlHttpRequest获取非本页内容,
而jsonp的核心则是动态添加标签来调用服务器提供的js脚本。
jsonp只支持一种形式所以type就不需要了,
因为jsonp的本质就是从头到尾是通过script标签src发送的请求,而这种请求只能通过url的地址传参,不可以通过请求体传参,所以这种形式仅仅支持get请求
3、贺师俊 --- JSONP 的工作原理是什么
就是利用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值