题目1: 什么是同源策略。
浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本
在没有明确授权的情况下,不能读写对方的资源。
本域指的是?
(1) 同协议: 如都是http或者https
(2) 同域名: 如都是http://jirengu.com/a
和http://jirengu.com/b
(3) 同端口: 如都是80端口
题目2: 什么是跨域?跨域有几种实现形式。
当前页面发送了一条ajax请求。当前页面的url和请求页面的url不处于同域或者同源,这就是跨域。就会被浏览器阻止掉。请求是有的,但是没有响应。这是浏览器的一种保护机制。
第二种跨域的方式。
浏览器是不允许操作不同源的iframe 里面的内容的。
我们可以在我们自己的页面上写js,操作我们自己页面上的元素,但是无法去操作iframe里面的,它所加载的其他元素。遵守同源策略就是可以操作的,如果不同源,那么它就无法操作。
题目3: JSONP 的原理是什么
html中script标签可以引入其他域下的js,比如引入线上的jQuery库,利用这个
特性,可实现跨域访问接口,需要后端支持。
echo $cb . '&&' . $cb . '{' . json_encode($ret) . ')'
1、定义数据处理函数_fun
2、创建script标签,src的地址执行后端接口,最后加个参数callback=_fun
3、服务端在收到请求后,解析参数,计算返还数据,输出fun(data) 字符串
4、fun(data)会放到script标签做为js执行,此时会调用fun函数,将data作为参数
题目4: CORS是什么。
CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种ajax
跨域请求资源的方式,支持现代浏览器,IE支持10以上。实现方式很简单,当你使用XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头: Origin, 后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头: Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含Origin的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据,所以CORS的表象是让你觉得它与同源的ajax请求没啥区别,代码完全一样。