AJAX 跨域请求

什么是跨域:
跨域可以简单的理解为从一个域名访问另一个域名,出于安全考虑,浏览器不允许这么做。如:localhost/XXX和http://www.baidu.com

跨域分为跨域和跨子域,如mp3.baidu.com和www.baidu.com

跨域解决方法

  • JSONP

JSONP为当下常见的解决方案。它实际上是动态创建一个script标签,将请求的URL设置为这个标签的SRC。而非ajax访问。这种方式需要前端和后端代码都进行相应的修改和实现。不是特别理想。不过目前流行的框架,都封装了JSONP的实现,因此前端无需太大的改动。反而是后台需要多一步实现。

iframe

  • 列表内容
    iframe也是比较常见的一种。通过动态创建iframe标签并访问url。却没有JSONP好使。
    服务器代由

  • 列表内容

服务器代由访问:在A域要访问B域不可以,那就在A域的服务器上再加一个后台接口,由A域的JS AJAX访问A域提供的接口,然后后台再去访问B域,再将得到的数据返回给A域前端。这个方法对前端影响不大,后台会麻烦点。

  • postMessage与postMessage跨域、
    postMessage的跨域方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。

想要完成“一个域”与“另一个域”的通信,最少需要两个步骤,其一是发送消息,其二是接收消息。在postMessage的这种跨域方式当中,提供了一个postMessage方法和一个message事件。
postMessage方法用于发送消息。
message事件,用于监听是否有消息传递,如果有则执行事件。

各种跨域方法的对比:
AJAX 跨域请求