js跨域是指通过js在不同的域之间进行数据传输或通信,只要协议、域名、端口有任何一个不同,都被当作是不同的域。 

     举例:  协议: http/https      域名:主机名      端口 :8080

     

javascript 跨域post请求 js跨域请求有哪些方式_javascript 跨域

1.通过jsonp跨域

    jsonp是说json格式数据使用的一种方式。

    原理是:动态插入script标签,通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。jsonp是需要服务器端的页面进行相应的配合的。

javascript 跨域post请求 js跨域请求有哪些方式_回调函数_02

 

   由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。

优点是兼容性好,简单易用,支持浏览器与服务器双向通信。缺点是只支持GET请求。

jQuery 中 $.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。

  

javascript 跨域post请求 js跨域请求有哪些方式_json_03

2.document.domain进行跨域

   将子域和主域的document.domain设为同一个主域.这里说的主域和子域说的是不同的页面。

  前提条件:这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域

3.window.name进行跨域

     window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。

4.HTML5的window.postMessage方法来跨域传送数据

 无论这个window对象是属于同源或不同源,可以使用它来向其它的window对象发送消息。