跨域请求以及实现跨域的方案
程序员文章站
2022-07-10 18:03:45
...
域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。
当前发起请求的域与该请求指向的资源所在的域不一样就叫跨域请求。
浏览器的同源策略,可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,是浏览器最核心也最基本的安全功能。
因为跨域请求有可能被不法分子利用来发动 CSRF攻击。出于安全方面的考虑 , 浏览器要对跨域请求作出限制
CSRF攻击图解如下
CSRF攻击详细请看:http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
实现跨域的方案:
1.JSONP: JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
首先要明白跨域访问不能成功的原因是,服务端返回的数据不能到达浏览器端(而不是不能发送请求)。
其本质是利用了标签具有可跨域的特性,由服务端返回预先定义好的javascript函数的调用,并且将服务端数据以该函数参数的形式传递过来。
<script>
function fuc(data){
console.log(data.name);
}
</script>
<script src="http://www.baidu.com/api.php?callback=fuc"></script>
JSONP 的缺点是:它只支持 GET 请求,而不支持 POST 请求等其他类型的 HTTP 请求,而且需要服务端配合,设置callback