同源 不同源 及跨域的简单梳理

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都可以,数据量有限制,私密信息会有安全性问题


                 

猜你喜欢

转载自blog.csdn.net/qq_42181069/article/details/80304991