跨域相关

Posted shijiu520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨域相关相关的知识,希望对你有一定的参考价值。

如果使用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>

 

以上是关于跨域相关的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 跨域

跨域相关

相关前台跨域的解决方式

AJAX跨域调用相关知识-CORS和JSONP

skydive跨域问题解决

AJAX相关JS代码片段和部分浏览器模型