JavaScript跨域
一、什么是JS跨域?
在了解跨域之前,先要知道同源策略。
- 同源策略:是浏览器的一种安全策略,所谓同源是指域名、协议、端口完全相同。在同源策略下,只有同源的地址才可以相互通过 AJAX 的方式请求。而跨域就是只要两个地址中协议、域名、端口有任何一个不相同,那它们之间的请求就被称之为跨域请求。
- JS跨域:指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。
只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。
注意:ip相同,域名不同,也属于跨域;对于端口和协议的不同,只能通过后台来解决。
二、JS跨域解决办法
1.JSONP
JSONP是 JSON with Padding(填充式json)的简写。
在浏览器中,<script>、<img>、<iframe>、<link>等标签都可以跨域加载资源,而不受同源资源的限制。它是借助于 script 标签发送跨域请求。
JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的JSON数据。
JSONP的原理