js动态Script跨域访问

     我们要开发一个WebGIS项目,希望实现类似Google Map API或者51ditu API的那种仅仅在用户端页面中嵌入几行脚本代码,就可以快捷,方便的实现地图发布的方式。gis技术方面基本都实现了。但是在用户端使用中发现脚本提示没有权限错误。上网了解了一下原来是由于Ajax无法跨域访问限制造成的。参考了网上的很多解决方式,目的是找到一种代替XMLHttp对象实现交互的方法。结果如下:

     1.IFrame方式:这是我们以前常用的一种交互方式,但无法实现像Google Map和51ditu的那么简洁的方式。所以被淘汰。

     2.修改服务器参数或者建立服务器代理,通过它们进行转换。我们服务器平台是Windows的,很遗憾我们不能接受这种方式。

     3.利用个别浏览器提供的跨域方式,或者要求用户手动设置IE安全权限。完全不符合我们开发人员的本性,怎么能把工作丢给用户或依赖其他浏览器呢。

     4.动态Script脚本,可以实现跨域访问,但只支持GET方式和返回XML或者Json格式的数据。虽然跟XMLHttp比较有点弱弱的感觉,但它毕竟符合我们的要求。能够达到我们的目的。而且现在暂时也只能使用这种方式。

     代码很简单:

     1.建立一个Script对象

     var so = document.createElement('SCRIPT');

     2.设置远程调用的另一个域的地址路径给要建立的Script对象.(既可以传递参数也可以是回调Js函数名称[要求服务器端代码开发])

     so.src='http://www.xxx.com/xxx.aspx?xxxx';

     3.动态建立Script对象。(你可以在body和head中创建)

     document.body.appendChild(so);

     OK!

     这是两个关于跨域问题解决方法的精华帖子

     

 


 

你可能感兴趣的:(script)