主页 > IT > 突破ajax不能跨域的限制

突破ajax不能跨域的限制

归类于 IT

众所周知,ajax不能发送跨域请求,这是浏览器的同源策略导致的,该策略阻止不同域的两个页面修改对方属性。浏览器安全机制的实现需要这种特性。

今天碰到了这个问题,我们需要在别的网站上放一个插件工具条,该工具条对应不同网站需要显示不同的信息,这需要通过请求我们的网站来得到数据,跨域问题就出现了。

那么如何突破ajax不能跨域的限制呢?

有两种方法可以解决,但是使用这两种方法,和ajax的关系就不太大了。

1. 服务端代理

可以先用ajax请求同源的服务端,在服务端请求跨域的另一个网站(服务端没有跨域限制),然后将服务端获得的数据发送给前端即可。

该方法的缺点是:代理服务端只能在ajax请求所在的域,对于我碰到的情况显然是不能实现的,我不可能在别的网站服务端添加需要的代码。

2. jsonp

利用script标签,该标签的src属性是没有跨域限制的,通过利用script跨域获取数据,并传递一个回调函数,在script标签动态插入dom后,远程数据就被下载下来,并可执行已定义好的客户端回调函数,实现跨域访问。

该方法缺点:服务端必须支持jsonp,且jsonp不支持post请求,不能发送过长的数据。

利用jsonp,顺利解决了我碰到的问题。jquery等js库已实现了jsonp请求,可以方便使用。

下面给出一个利用jsonp实现从sina获取股票开盘价,当前价等信息,以及K线图的示例,效果页面



归类于 IT

评论已经关闭

顶部