什么是跨域?如何解决跨域

252 阅读1分钟

1.什么是跨域?

跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这一点很重要!!!

同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;

2.如何解决跨域问题?

                CORS跨域资源共享
                服务端:header("Access-Control-Allow-Origin:*");
                “*”表示所有的域都可以接受
                    -->
                    <!-- 
                        跨域解决方案2
                        jsonp
            动态创建script标签,使用jQuery的jsonp请求
            优点
            兼容性强&不受同源策略的限制
            缺点
            只能用get方法,不能使用post方法
     <script>
         /* 使用jsonp解决跨域 */
        $.ajax({
            url:"http://192.168.1.2/a.php",
            type:"get",
            //定义发送jsonp请求
            dataType:'jsonp',
            //更改定义的参数名
            jsonp:'kyFn',//修改callback名称,但是php中也要修改成相对应的函数名
            //指定jsonp发送的回调函数名(可以任意起名字,无需对应)
            jsonpCallback:'callBack',
        });
        function callBack(res){
            document.write(res);
        }