两个应用系统的页面之间需要用javascript交互,一般情况下比如子页面调用父页面的操作window.parent....这时会抛出一个javascirpt错误,提示没有权限。
实际这是浏览器禁止了javascript跨域访问。
今天测试了一下,发现如果在一个应用服务器下发布的两个应用,链接的url只是在路径上有不同,比如http://localhost:8080/proXX,这样的两个应用界面可以相互调用。
如果不在同一应用下就有以下的方式:
1、设置document.domain
前提条件:两个页面同属于一个基础域(例如都是tb.com);同一协议(例如都是http);同一端口(例如都是80)。
方法:设置两个页面的document.domain都设置为自己所在的基础域名。
例子:a.tb.com里面的一个页面需要调用b.tb.com里的一个对象,则将两个页面的document.domain都设置为tb.com,就可以了。
document.domain 的使用和需要注意的
在 JavaScript 中我们可以通过在页面中加入如下声明来强制指定页面所属的域。
<script language="JavaScript">
<!--
document.domain = "tb.com"; //指定 document 所属的域
-->
</script>
document.domain 属性是不可以随便设置的,它只能被设置为文件所属域的上级域。
只有当两个域存在相同的上级域时,才能通过指定 document.domain 来实现它们之间的数据交换,并且 document.domain 属性必须被 设置为二者的公共域。
并非所有的浏览器都支持对 document.domain 属性进行设置。如 MSIE 和 Netscape 它们4.0以前的版本是不支持对该属性的设置的;另外有趣的是虽然 Netscape 在4.0以后开始支持对 domain 进行设置了,但在4.03 和4.04两个版本中 Netscapre 居然又把上面的功能给取消了。
2、在服务器端设置代理(所谓的小偷程序)
跨域的请求同样发送到本地服务器端,由服务器端的代理来请求相应的数据,然后发送给浏览器端。这样实际上浏览器端的所有请求都是发到相同的域,在服务器端代理的帮助下,实现了跨域的能力。
分享到:
相关推荐
jquery跨域调用,js跨域调用,jsonp,跨域调用
JS调用WCF服务实例(WCF服务宿主到控制台),解决Js跨域调用问题 源码实例 wcf宿主到控制台上,并内置js调用服务的源码
使用JS调用Window服务,使用WCF技术和WebServiceHost类实现跨域调用。可以用于读取本机MAC地址、获取硬件设备信息等。
JavaScript跨域调用基于JSON的RESTful API_.docx
主要介绍了JavaScript跨域调用基于JSON的RESTful API的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
实现内嵌的iframe跨域调用父页面js方法
下面小编就为大家带来一篇js跨域调用WebService的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
能够完美解决arcgis js跨域解决问题,该文档详细说明了.NET或者java环境下跨域解决
主要介绍了json跨域调用python的方法,结合实例形式分析了基于ajax的json调用及Python后台处理技巧,具有一定参考借鉴价值,需要的朋友可以参考下
整理一个json格式的例子,以及php json格式与js json之间的调用(传说中的js跨域调用)
实现WCF同时支持SOAP和AJAX跨域调用(支持代理启动) 1、基于WCF框架对REST架构的WEB(支持SOAP)服务实现; 2、支持javascript的多种方式跨域访问(GET/POST/PUT/DELETE); 3、解决服务调用参数传递的动态设计...
常用的jquery实现跨域调用 $.ajax({ url: "http://127.0.0.1/~chenjiebin/mycode/php/crossdomain/index.php", dataType: "jsonp", jsonp: "callback", context: document.body, success: function(data) { ...
自己做的小例子,关于跨域调用。用的是jquery. 里面两个工程。A和B。用A调用B。 放在tomcat或myeclipse中就可以跑起来。以前做建行的项目。用到的。很实用。 两个工程可以放在不同的机器上。IP也不同。相当于...
最近项目中需要跨域调用其他项目的数据,其他项目也是使用的EasyUI的datagrid组件,开始以为直接在datagrid的... 搜索了下JavaScript跨域调用的文章“JavaScript跨域访问问题解决方法”得到启发,发现原来是因为easyU
使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript也可以实现跨域调用js。 ok,了解了jsonp的原理和应用后,我们看看百度的智能提示是如何做的 在chrome的调试窗口下看看百度搜索...
解决taro h5在调用接口时出现跨域的情况 修改config下的index.js