Ajax跨域访问解决方案(httpclient、JSONP深入剖析)

来源:互联网 发布:淘宝账户被冻结多久 编辑:程序博客网 时间:2024/05/22 05:02

1、 问题:所有支持Javascript的浏览器都会使用同源策略这个安全策略。同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。Ajax请求非同源的地址,会被浏览器拒绝。



上面这个ajax是不能正确执行的。

2、 解决方案一:请求方,可以用自己的服务器中转


使用Httpclient,你可以在java程序中模拟浏览器,网址http://hc.apache.org/,在HttpClient Samples 的Response handling基础上,很容易改成你自己的接口。

3、 解决方案二:要求服务器,提供JSONP接口


仔细看看,script标签是可以跨域访问的。这就有办法了。要求服务端将数据包含在js代码块中,就OK了。为了便于理解,我们一步步来推进给你看看。


将js代码块移到一个文件中,效果是等价的


将js的src改为任意url也是可以的,只需要那个url返回的也是一段js代码即可

 

 

使用jQuery提供的JSONP方式,能很方便请求我们的JSONP接口,取得数据

总结:这是通过js传递数据,其实与Ajax没有关系的。我们通过这种方式,实际上开辟了另外一条局部刷新页面的方式。

解决方案三:使用html5也可以实现跨域访问,但IE9以下的浏览器不支持

以下无正文

作者:北大天池牛人教育中心 NiuRenEdu.com

 

原创粉丝点击