scheme://hostname:port
同域 就是schem hostname port 都同样
跨域 就是这三个里有一个不同就是跨域
在本身的域名里请求其余域的服务器,这个就叫作跨域请求
同源策略:
浏览器厂商为了安全强制添加的一种安全策略,也就是不一样域之间没法相互访问
并非全部的跨域请求都会受到同源策略的限制,只有当浏览器认为这个跨域请求构成安全威胁的时候才会激活同源策略限制
例子:iframe 能够加载到其余域名的资源,可是没法操做不一样域的DOM
link:会把资源按照指定格式导入到当前页,除了连接css其余的都只能连接本域名内的
script 任何状况都不受同源策略的限制(同源策略是无视script标签的),可是会把加载到的内容强制当成脚原本执行
img 任何状况下都不受同源策略的限制,可是会把加载到的内容强制当成图片来显示
jsonp原理:就是利用script标签不存在域的概念(能够在本身的网页中引入任何域名下的js),咱们经过script的src属性向后台发送一个请求,而且把一个函数的名字xxxx传递给后台(通常来讲都是?callback=xxxx)传递给后台
后台会把传递进来的参数进行解析,获取到方法名xxxx,而且执行这个方法,把全部须要给你的数据传递给xxxx
咱们xxxx中定义的形参data中其实就已经存储了咱们须要的数据,接下来在作数据解析,数据绑定便可
jsonp返回的数据有固定的格式
方法名+(+json数据+);
json padding ---->往json数据前面填充了一个方法名,因此叫作json-padding 也就是jsonp
注意事项:
一、只能请求接口 (跨域交互有两种形式:接口形式 页面通讯形式)
二、只能是http的get方法,get系有的特色jsonp全有
三、安全性问题,使用jsonp的接口必须是安全系数很是低的接口
四、传过去的方法名,必须是全局方法
第二种跨域方式:CORS(跨域资源共享)(接口形式的)
使用跨域资源共享必须server端强配合
必须加上响应头Access-Control-Allow-Origin
这个响应头有两个值(*和指定域名)*表明全部的跨域请求我都容许
若是想携带coolie的话server必须添加
把Access-Control-Allow-Origin设置为true
这两个跨域方法的区别
1 、jsonp不算是ajax,而是cors是ajax
二、发送jsonp请求,server必须严格返回jsonp的格式,而cors必须加上指定的响应头信息
三、jsonp只能是get方法,而cors则是ajax支持的它都支持
四、相比较之下cors比jsonp安全
五、jsonp永远是异步的,而cors可同步可异步
六、jsonp没有兼容性,而cors不支持ie6和7
它们的共同点
一、都是跨域请求数据
二、都是接口形式的跨域请求
我的整理
转载请标明出处