1、什么是同源?不同源?
下面的这三个内容一样 我们称之为同源
ip地址:192.168.13.75 (示例)
端口:80 (示例)
协议:http:
两个同源的页面 是可以互相发送请求的 没有任何的限制
反之,
ip,端口,协议有任何 一个不一样 就是不同源
不同源的页面之间 不能直接发送请求
浏览器会提示 错误
2、不同源的页面该如何互相访问——‘跨域’
3、常见的两种跨域方案:
a. CORS: cross origin resource share
服务器端 设置一个允许的header 我们就可以跨域访问
header('Access-Control-Allow-Origin: *');
注意点
1.这项技术是h5中推出的,有兼容性问题,只有支持html5的浏览器才可以使用
2.php中设置的语法是header('Access-Control-Allow-Origin: *'); 其他语言的语法 类似的 设置的内容是一样的 都是允许访问
b. JSONP:
目前兼容性 很好的 跨域方案
4、 关于跨域方案
默认是无法跨域的,
但是实际开发中 不可避免的会碰到类似这样的情况,比如 调用别人的api (图灵机器人,天气预报,豆瓣)
5、对于JSONP的解释:
a、html元素的 src属性 天然就支持 跨域访问
JSONP 就是利用了script的 src 支持跨域访问
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script>
b、 JSONP这项技术 出来之后 广大的程序员就做了一个约定,统一使用callback作为key
<script src="http://192.168.13.75/2018-5-12/08.JSONP/backData.php?callback=doSomething"></script>
c、JSONP的限制
只能发送get请求,CORS get和post都可以,数据量有限制,私密信息会有安全性问题