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

Ajax请求受到浏览器同源策略限制,不能跨域访问。为解决此问题,可以使用Httpclient在服务器中转请求,或利用JSONP(通过script标签跨域)。JSONP是通过在服务端生成包含数据的JavaScript函数调用,客户端通过动态插入script标签执行该函数获取数据。此外,HTML5提供了跨域访问的支持,但IE9以下浏览器不支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

 

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

 

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

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


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

 

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

 

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

 

 

 

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

 

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

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

以下无正文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值