首页 > 代码库 > 跨域相关

跨域相关

如果使用XMLHttpRequest 不能发送跨域请求,但是可以使用
script 标签去发送请求
如果添加了一个dataType 等于 jsonp,jQuqey 的ajax 方法
底层就不使用XMLHttpRequest, 而是去创建一个script标签,
然后通过script 标签去发送请求
如果使用script 标签发送请求,那么如何接收服务器发送返回的数据?
如果使用script 标签发送请求,服务器返回了数据,返回的数据
客户端浏览器直接以javascript 的方式去解析服务器返回的数据
script 浏览器调用js 的解析引擎去解析数据

客户端给服务端传递一个回调函数,它还需要定义一个函数
服务端返回的是一个回调函数的调用,并且将服务端的数据包在这个函数的调用里面

jsonp 只能使用get
因为底层使用script 标签发送请求
scr href 这些发送的请求都是get 请求

jquery 只支持jsonp

post 也是可以跨域的,但就不是jsonp 了

post 是 cors 跨域资源共享

 

服务端:

   

<?php


$callback = isset($_REQUEST[‘callback‘]) ?$_REQUEST[‘callback‘] : ‘‘;

$data = array(‘name‘=>‘lisi‘,‘age‘=>22);
$json = json_encode($data);

echo $callback . "($json)";

 

客户端:

  

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <input type="button" value="click">
    <script type="text/javascript">
        function getInfo(args){
            console.log(args)
        }

        document.querySelector(input).onclick = function(){
            
            var script = document.createElement(script);
            script.src = index.php?callback=getInfo;
            document.body.appendChild(script);
        }
    </script>
</body>
</html>

 

跨域相关