AJAX跨越访问解决方案

1、JSONP

  JSONP参考教材:http://kb.cnblogs.com/page/139725/

  JSONP是利用HTML的script标签一下特性:

    1)引用外部资源不受跨域问题影响

    2)script标签加载完js资源后立马自动执行加载的js

    3)新加载的js作用域为全局

  script标签的src属性指向服务端动态生成js文件,该js文件的基本格式如下:

callback(jsonData);

  其中callback函数在客户端定义,名称不定,由script标签通过url传参传递到服务器,jsonData为目标数据。

  简单的说就是:在网页中定义一个全局函数,让后通过script标签访问服务器并带上这个全局函数名,服务器收到这个函数名动态生成上文提到的js文件,网页加载完后就会执行全局函数。

 优点:

  简单方便,通过封装能做到像写AJAX一样;

 缺点:

  1)服务器接口需要改变

  2)无法获获知接口调用失败

2、Access-Control-Allow-Origin

  在返回的响应信息中,使用 Access-Control-Allow-Origin 头来控制哪些域名的脚本可以访问该资源。如果设置 Access-Control-Allow-Origin:*,则允许所有域名的脚本访问该资源。如果有多个,则只需要使用逗号分隔开即可。

  注意:在服务器端,Access-Control-Allow-Origin 响应头中的端口信息不能省略。

 优点:

  1)简单方便

  2)客户端不需要作任何改动

 缺点:

  1)服务端安全性降低

  2)需要服务端配合修改报文头

3、利用iframe

  推荐教程:http://www.jb51.net/article/33711.htm

 优点:

 缺点:

  1)数据迂回传递

  2)需在服务端部署response.html

  3)回调函数必须为全局函数

posted @ 2016-06-13 13:44  庚午月圆人  阅读(811)  评论(0编辑  收藏  举报