解决跨域的三种方法?

在学习跨域之前,我们先了解一下同源的概念:所谓同源就是,两个网址对应的协议、和主机对于两个页面是相同的则这两个页面具有相同的源。只要三者之一任意一点有不同,那么就为不同源。出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果。接下来我们了解解决跨域的几种方法:
1、JSONP(JSON with Padding)方式,它是JSON的一种使用方法SONP(JSON with Padding)是JSON的一种”使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.dddd.com 的网页无法与不是 server1.dddd.com的服务器沟通,而 HTML 的script 元素是一个例外。利用<script>元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。
要注意JSONP只支持GET请求,不支持POST请求。
2、代理:
例如www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。
3、PHP端修改header(XHR2方式)
在php接口脚本中加入以下两句即可:
header(‘Access-Control-Allow-Origin:*’);(允许所有来源访问)
header(‘Access-Control-Allow-Method:POST,GET’);(允许访问的方式)

猜你喜欢

转载自blog.csdn.net/qq_40859799/article/details/81565153