Cors跨站资源共享一解决跨域问题

1.我们的jsonp技术确实是可以进行跨域请求,但是有一个弊端就是只能是get发送的请求,因为jsonp的底层原理是利用标签去发生请求,如果想要发送一些大规模的数据的话就必须要用到post方式,那post方式怎么可以实现跨域请求的呢!!
2.我们只需要在服务端设置一个响应头即可:
header('Access-Control-Allow-Origin:请求源域名或者*');
意思就是当前服务器允许跨域请求,设置这个之后,就不存在跨域了,直接用ajax就能发送请求接受数据

原理过程:

客户端在发生请求之前会根据同源策略看是否是跨域请求,如果是同源,则直接发送真正的请求,但如果不是同源,浏览器会预先发送一条跨域请求(浏览器自身内部发送的),服务器接受到了跨域请求之后,会返回自身内部设置的响应头,如果没有设置header('Access-Control-Allow-Origin:请求源域名或者*'); 则浏览器判断为服务端不允许跨域请求,则不发送真实的ajax请求,但如果服务端设置了,那么浏览器会认为服务器允许接受跨域请求,(同源),再发生真正的ajax请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        var xhr = new XMLHttpRequest();
        xhr.open('get','http://www.studyit.com/views/test.php',true);
        xhr.send(null);
        xhr.onreadystatechange = function () {
            if(xhr.readyState == 4 && xhr.status == 200) {
                var data = xhr.responseText;
                console.log(data);
            }
        }
    </script>
</body>
</html>
在PHP文本中书写
 <?php
    header('Access-Control-Allow-Origin:http://www.study.com');
    echo 'hello';
  ?>

http://www.study.com也可以书写其他地址,表示可以跨域的页面,*号表示所有的页面都可以跨域

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容