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)回调函数必须为全局函数