JavaScript 跨域详解

什么跨域

端口、域名、协议任何一个不同都视为跨域。

1 跨域资源共享(CORS)

CORS(Cross-Origin Resource Sharing)跨域资源共享。
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

2 JSOUP

实现方案

1
2
3
4
5
6
<script type="text/javascript">
function dosomething(jsondata){
console.log(jsondata);
}
</script>
<script src="http://gis.com:8080/searchlist?callback=dosomething"></script>

返回示例如下:

通过以上方案在script中加入请求,但是要注意,如果要在dosometing中返回参数处理,那么服务器端要进行配合,返回相应参数。而在jquery中这个函数会在jquery中生成。

优缺点

JSONP的优点是:它的兼容性更好,在更加古老的浏览器中都可以运行,并且在请求完毕后可以通过调用callback的方式回传结果。

JSONP的缺点则是:它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

3 document.domain

4 window.name

5 HTML5中新引进的window.postMessage