跨域

题目1: 什么是同源策略

浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

题目2: 什么是跨域?跨域有几种实现形式

同域:1.协议相同2域名相同3.端口相同
不满足同域三个条件就叫跨域。
实现跨域的方式:
JSONP,缺点不安全只支持get请求.
CORS,兼容性,ie10以上才能用
降域,适用于同一个网站里多个子网站相互请求数据,降到所有孩子用父亲名,就变同域了
postmanager:相互发送消息,要不要随你

题目3: JSONP 的原理是什么

先看例子:


//返回数据后是这种格式

//我的js中定义了一个callback函数
//到这里就获得了与我不同域的weather.com传回来的数据并且可以使用

原理:利用页面引用的js可以是不同域的文件这一特性。当然也需要与服务器约好,服务器配合传输数据才能实现。
缺点:有安全隐患,以为接受的数据是直接作为js运行,万一服务器不怀好意传输恶意js代码,那就玩完了,只支持get请求。

题目4: CORS是什么

cors有点像有名字有照片的专属通行证。这个通行证谁看?看门的(浏览器)浏览器发现网页跨域请求后给你加个标签(请求头),origin,服务器看到这个标签后会决定发不发通行证,通行证会有url,浏览器看这个通行证上地址跟你是不是同一人,是给你数据,不是对不起不给,就不给。为什么要这样做,看门的当然是为了安全。

官方解释: CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式,支持现代浏览器,IE支持10以上。 实现方式很简单,当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。所以 CORS 的表象是让你觉得它与同源的 ajax 请求没啥区别,代码完全一样。

你可能感兴趣的:(跨域)